struct sockaddr and pals
函式原型
#include <netinet/in.h>
// 全部指向 socket address structures 的指標,通常會在各種函式或 system calls 使用以前,
// 轉型為對相對應型別的指標:
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes 的 protocol address
};
// IPv4 AF_INET sockets:
struct sockaddr_in {
short sin_family; // 例如:AF_INET, AF_INET6
unsigned short sin_port; // 例如:htons(3490)
struct in_addr sin_addr; // 參考下列的 struct in_addr
char sin_zero[8]; // 若你想要的話,將這個設定為零
};
struct in_addr {
unsigned long s_addr; // 用 inet_pton() 載入
};
// IPv6 AF_INET6 sockets:
struct sockaddr_in6 {
u_int16_t sin6_family; // address family, AF_INET6
u_int16_t sin6_port; // port number, Network Byte Order
u_int32_t sin6_flowinfo; // IPv6 flow 資訊
struct in6_addr sin6_addr; // IPv6 address
u_int32_t sin6_scope_id; // Scope ID
};
struct in6_addr {
unsigned char s6_addr[16]; // 用 inet_pton() 載入
};
// 承載 socket address 的 structure,要足以承載
// struct sockaddr_in 或 struct sockaddr_in6 data:
struct sockaddr_storage {
sa_family_t ss_family; // address family
// 這個全部都是填充的內容,依據實作而定,請忽略它:
char __ss_pad1[_SS_PAD1SIZE];
int64_t __ss_align;
char __ss_pad2[_SS_PAD2SIZE];
};說明
範例
參考
Last updated