数据类型
<sys/types.h>
int8_t |
带符号8位整数 |
uint8_t |
无符号8位整数 |
<sys/socket.h>
sa_family_t |
套接口地址结构的地址族 |
socklen_t |
长度,一般为uint32_t |
<netinet/in.h>
in_addr_t |
ipv4地址,一般32位 |
in_port_t |
tcp/udp端口,一般16位 |
结构
<netinet/in.h>
struct in_addr{
in_addr_t s_addr;
}
struct sockaddr_in{
uint8_t sin_len;
sa_family_t sin_family; //AF_INET
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
}
struct in6_addr{
unit8_t s6_addr[16];
};
struct sockaddr_in6{
uint8_t sin6_len;
sa_family_t sin6_family; //AF_INET6
in_port_t sin6_port;
uint32_t sin6_flowinfo;
struct in6__addr sin6_addr;
};
通用套接口地址结构
<sys/socket.h>
struct sockaddr{
uint8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
}
字节排序函数
<netinet/in.h>
uint16_t htons(uint16_t host16bitvalue); |
uint32_t htonl(uint32_t host32bitvlaue); |
返回网络字节序
uint16_t ntohs(uint16_t net16bitvalue); |
uint32_t ntohl(uint32_t net32bitvalue); |
返回主机字节序
地址转换函数
<arpa/inet.h>
int inet_aton(const char* strptr, struct in_addr * addrptr) |
1对,0错 |
in_addr_t inet_addr(const char* strptr) |
错INADDR_NONE |
char* inet_ntoa(struct in_addr inaddr) |
|
新的地址转换
<arpa/inet.h>
int inet_pton(int family, const char* strptr, void* addrptr) |
const char * inet_ntop(int family, const void * addrptr, char *strptr, size_t len) |
测试描述符函数
<sys/stat.h>
int isfdtype(int fd, int fdtype) |
socket函数
<sys/socket.h> <sys/types.h>
int socket(int family, int type, int protocol) |
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) |
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) |
int listen(int sockfd, int backlog) |
int accept(int new_sockfd, struct sockaddr *addr, socklen_t *addrlen) |
int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *namelen) |
int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen) |