本章主要说明:
1. 5中不同的套接字地址,以及其结构体定义,和使用说明。
2. 网络地址的结构体(数字)和字符串相互转换函数。
3. 字节序测试,调整函数。
4. 内存按字节操作函数。
一、 套接字地址结构
这些结构体地址很多,感觉很难记,可能要以后多实践吧。。
所有网络地址都是以sockaddr_ 开头的结构体组成,包括IPV4的 struct sockaddr_in{}, IPV6 的 struct sockaddr_in6;,UNIX域 struct sockaddr_un,
数据链路 struct sockaddr_dl , 通用套接字地址有两个, struct sockaddr(旧) ,以及struct sockaddr_storage(新)
1. IPV4套接字地址结构体
IP地址结构体:
struct in_addr{
in_addr_t s_addr;
};
通常 in_addr_t 是 由一个unsigned int 类型typedef而来, 为何struct in_addr 结构体里面只有一个地址成员, 却还定义了一个结构体?
这是有历史原因的,原来把这个结构定义为多种结构体的union, 为了方便访问地址有ABC分类中的2个16位值,但是目前这种地址分类方法被淘汰了,所以这种结构体演变成这样。
struct sockaddr_in{
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;