struct sockaddr_in 和 struct sockaddr 的区别
时间: 2024-02-26 09:58:55 浏览: 75
绑定前sockaddr_in的初始化-Socket网络编程轻松学
`struct sockaddr_in`是基于`struct sockaddr`的一个特定的套接字地址结构体,用于表示IPv4地址。它的定义如下:
```c
struct sockaddr_in {
short int sin_family; // 地址族(Address Family),一般为AF_INET
unsigned short int sin_port; // 端口号,网络字节序(Network Byte Order)
struct in_addr sin_addr; // IPv4地址
unsigned char sin_zero[8]; // 填充,使sockaddr_in和sockaddr具有相同的大小
};
```
可以看到,`struct sockaddr_in`包含了`struct sockaddr`的所有字段,同时还包含了`sin_port`和`sin_addr`字段,分别表示IPv4地址的端口号和IP地址。`sin_family`字段仍然表示地址族,一般为`AF_INET`。为了保证`struct sockaddr_in`和`struct sockaddr`具有相同的大小,`struct sockaddr_in`还包含了一个名为`sin_zero`的填充字段。
总之,`struct sockaddr`是包含通用套接字地址信息的结构体,而`struct sockaddr_in`是针对IPv4地址族的特定套接字地址结构体。
阅读全文