私はそれをグーグルで検索しました、そして何人かの人々は「structsockaddrで同じサイズを保つために」と言います。しかし、カーネルはsockaddrを直接使用しません(右?)。使用する場合。カーネルはそれを元の状態に戻します。では、なぜゼロパディングが必要なのですか?
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
struct in_addr {
unsigned long s_addr; // load with inet_pton()
};