sockaddr与 sockaddr_in

留住因为很多系统调用必须使用这种结构
struct sockaddr {
unsigned short sa_family; /* 地址族, AF_xxx */
char sa_data[14]; /* 14bytes的协议地址*/
}; 


上面是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换

struct sockaddr_in {
short int sin_family; /* 地址族,AF_xxx 在socket编程中只能是AF_INET使用主机字节序 */
unsigned short int sin_port; /* 端口号 (使用网络字节顺序) */
struct in_addr sin_addr; /* 存储IP地址 4字节 */
unsigned char sin_zero[8]; /* 总共8个字节,实际上没有什么用,只是为了和struct sockaddr保持一样的长度 */
};
struct in_addr就是32位IP地址。
struct in_addr {
    in_addr_t s_addr;
};

猜你喜欢

转载自blog.csdn.net/andrewgithub/article/details/81638528