Socket基本API 总结

来源:互联网 发布:纪念册制作软件app 编辑:程序博客网 时间:2024/05/02 01:42

套接字建立过程:

srever:1 socket创建套接字2 bind ip和port3 listen4 accept5 read/write6 closeclient:1 socket2 connect3 read/write4 close
int socket(int domain, int type, int protocol);//失败返回-1,成功返回文件描述符//domain 套接字协议族 type数据类型 protocol通信协议信息int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);int listen(int sockfd, int backlog);int accept(int sockfd, struct sockaddr *addr,socklen_t *addrlen);int connect(int sockfd, struct,sockaddr *serv_addr, socklen_t, addrlen);/*成功返回0,失败返回-1*/

协议族:
PF_INET, PF_INET6,PF_LOCAL等

套接字类型:
SOCK_STREAM 面向连接
SOCK_DGRAM 面向消息

文件描述符:

int open(const char *path, int flag);//path 地址,flag打开方式int close(int fd);//成功返回0,失败返回-1//写入文件:ssize_t write(int fd, const void *buf, size_t, ntypes);//失败返回-1,成功返回写入的字节数//读取文件ssize_t read(int fd, void *buf, size_t nbytes);//失败返回-1,成功返回接收的字节数

IPv4结构体

struct sockaddr_in{    sa_family_t    sin_family; //地址族    uint16_t       sin_port;   //端口号    struct in_addr sin_addr;   //32位ip    char           sin_zero[8];//不使用   };struct in_addr{    In_addr_t   s_addr;        //32位iPv4地址}

地址族: AF_INET,AF_INET6,AF_LOCAL

字节序转换:

unsigned short htons(unsigned short);unsigned short ntohs(unsigned short);unsigned short htonl(unsigned short);unsigned short ntohl(unsigned short);/*h代表主机(host)字节序n代表网络(network)字节序s是shortl是long*/in_addr_t inet_addr(const char *string);//返回32位大端整数值,失败返回INADDR_NONEint inet_aton(const char *string, struct in_addr * addr);//成功返回1,失败返回0//将字符串32位ip地址转换为整数char *inet_ntoa(struct in_addr adr);//成功返回地址值,失败返回-1//将整数ip转换为字符串

UDP函数

ssize_t sendto(int sock, void *buff, size_t ntypes, int flags, struct sockaddr *to, socklen_t addrlen);ssize_t recvfrom(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen);

断开函数shutdown

int shutdown(int sock, int howto);/*第二个参数是断开方式:SHUT_RD    断开输入流SHUT_WR    断开输出流SHUT_RDWR  同时断开O/I流*/

IP与域名的转换

struct hostent * gethostbyname(const char *hostname);//通过域名获得ipstruct hostent * gethostbyaddr(const char *addr, socklen_t len, int family);//通过ip获得域相关信息struct hostent{    char * h_name;       //official name    char ** h_aliases;   //alias list     int h_addrtype;      //host address type    int h_length;        //address length    char ** h_addr_list; //address list};
0 0
原创粉丝点击