//ipv4的socket 地址结构
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_);
in_port_t sin_port; /* Port number. */ //sin_port是一个unsigned short int变量,tcp/udp端口好
struct in_addr sin_addr; /* Internet address. */
//sin_addr是unsigned int的变量,ipv4地址
/* 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的定义如下:
#define __SOCKADDR_COMMON(sa_prefix) \
sa_family_t sa_prefix##family
typedef unsigned short int sa_family_t;
__SOCKADDR_COMMON_SIZE的值为:#define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int))
struct sockaddr的定义为:
struct sockaddr
{
__SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
char sa_data[14]; /* Address data. */
};
sockaddr是网络socket的地址结构通用定义,ipv4是它的一个 实例
本文详细解析了IPv4的socket地址结构,包括sin_port(端口号)、sin_addr(IPv4地址)以及额外的填充位,展示了如何使用struct sockaddr_in进行地址表示。
3448

被折叠的 条评论
为什么被折叠?



