简介
大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议族都定义它自己的套接字地址结构。这些结构的名字均以“sockaddr_”开头,并以对应每个协议族的唯一后缀结尾。
IPv4套接字地址结构
IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>
头文件中。它的定义如下:
struct in_addr
{
in_addr_t s_addr; /* 32-bit IPv4 Internet address. */
};
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_);
in_port_t sin_port; /* 16-bit TCP or UDP Port number. */
struct in_addr sin_addr; /* 32-bit IPv4 Internet address. */
/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
__SOCKADDR_COMMON_SIZE -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
其中宏“__SOCKADDR_COMMON()”的内容如下: