Socket网络编程总结
1.sockaddr结构体
sockaddr结构体包含了网络地址和端口的一些数据。以下三个函数实现了字符串转sockaddr结构体的功能。
1 int inet_aton(const char *strptr, struct in_addr *addrptr); 2 in_addr_t inet_addr(const char *strptr); 3 int inet_pton(int family, const char *strptr, void *addrptr);
in_addr转字符串的函数:
1 char *inet_ntoa(struct in_addr inaddr); 2 const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
2.连接时的相关函数,首先是server端
int sockfd(int family, int type, int protocol)
family是指明是IPV4还是IPV6的参数,平常我们用的IPV4是AF_INET。type是指的是面向连接还是数据包的选项,分别是SOCK_STREAM以及SOCK_DGRAM。protocal是协议名,一般默认为0即可。
int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen)
sockfd是之前的fd,myaddr以及addrlen是sockaddr的地址以及相应的长度。
int listen(int sockfd, int backlog)
sockfd是相应的文件描述符,backlog指的是可以有监听多少个客户端。
int accept(int sockfd, struct sockaddr *myaddr, socklen_t addrlen)
sockfd为相应的文件描述符,myaddr 以及addrlen为相应的地址和字符长度。
ssize_t write(int fd, const void *buf, size_t count);
ssize_t read(int fd, const void *buf, size_t count);
返回写入与读出的字节数
close(int fd)
以下是 client端的相关函数:
int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);
)