C语言中的sockaddr结构体用于表示一个通用的网络地址,其定义如下:
struct sockaddr {
unsigned short sa_family; // 地址族(AF_xxx)
char sa_data[14]; // 14字节的协议地址
};
sockaddr结构体主要用于在网络编程中定义和操作不同类型的网络地址。
常见的sockaddr结构体及其用法如下:
struct sockaddr_in {
short int sin_family; // 地址族(AF_INET)
unsigned short int sin_port; // 端口号
struct in_addr sin_addr; // IPv4地址
unsigned char sin_zero[8]; // 未使用
};
struct sockaddr_in6 {
unsigned short int sin6_family; // 地址族(AF_INET6)
__uint32_t sin6_flowinfo; // 流信息
struct in6_addr sin6_addr; // IPv6地址
__uint32_t sin6_scope_id; // 作用域标识
};
struct sockaddr_un {
sa_family_t sun_family; // 地址族(AF_UNIX)
char sun_path[108]; // 套接字路径名
};
以上是常见的几种sockaddr结构体的使用方法,具体使用哪种结构体取决于所使用的网络协议和地址类型。