#include <netinet/in.h> struct in_addr { in_addr_t s_addr; /* 32-bit IPv4 address */ }; /* network byte ordered */ struct sockaddr_in { unit8_t sin_len; /* length of structure (16) */ sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; /* 16-bit TCP or UDP port number */ /* network byte ordered */ struct in_addr sin_addr; /* 32-bit IPv4 address */ /* network byte ordered */ char sin_zero[8]; /* unused */ };
/* ============================================================================================================================================ */ #include <arpa/inet.h> int inet_aton(const char *strptr, struct in_addr *addrptr); 返回:若字符串有效則爲1,不然爲0 in_addr_t inet_addr(const char *strptr); 返回:若字符串有效則爲32位二進制網絡字節序的IPv4地址,不然爲INADDR_NONE char *inet_ntoa(struct in_addr inaddr); 返回:指向一個點分十進制數串的指針
/* ============================================================================================================================================ */ #include <sys/socket.h> ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags); ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags); 返回:若成功則爲讀入或寫出的字節數,若出錯則爲-1 #include <sys/uio.h> ssize_t readv(int filedes, const struct iovec *iov, int iovcnt); ssize_t writev(int filedes, const struct iovec *iov, int iovcnt); 返回:若成功則爲讀入或寫出的字節數,若出錯則爲-1 #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen); ssize_t sendto(int sockfd, const void *buff, size_t nbytes, int flags, const struct sockaddr *to, socklen_t addrlen); 返回:若成功則爲讀或寫的字節數,若出錯則爲-1 #include <sys/socket.h> ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); ssize_t sendmsg(int sockfd, struct msghdr *msg, int flags); 返回:若成功則爲讀入或寫出的字節數,若出錯則爲-1