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結構體的使用方法,具體使用哪種結構體取決于所使用的網絡協議和地址類型。