UNP 学习笔记——套接字编程简介
1、IPv4 套接字地址结构是什么?
struct sockaddr_in{
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in_addr{
in_addr_t s_addr; // 4 bytes
};
2、通用套接字地址结构是什么?
struct sockaddr{
uint8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
};
struct sockaddr_in serv;
bind (sockfd, (struct sockaddr *) &serv, sizeof (serv)); // 强制类型转换
3、IPv6 套接字地址的结构是什么?
struct sockaddr_in6{
uint8_t sin6_len;
sa_family_t sin6_family;
in_port_t sin6_port;
uint32_t sin6_flowinfo;
struct in6_addr sin6_addr;
uint32_t sin6_scope_id;
};
struct in6_addr {
uint8_t s6_addr[16];
};
4、新的通用套接字地址结构是什么?
struct sockaddr_storage{
uint8_t ss_len;
sa_family_t ss_family;
...
};
5、字节排序函数有哪些?
uint16_t htons(uint16_t );
uint32_t htonl(uint32_t );
uint16_t ntohs(uint16_t );
uint32_t ntohl(uint32_t );
6、地址字符串与网络字节序转化的函数有哪些?
int inet_pton(int family, const char* strptr, void* addptr);
const char* inet_ntop(int family, const void* addptr, char* strptr, size_t len);
本作品采用《CC 协议》,转载必须注明作者和本文链接