Sockfd是调用socket函数返回的socket描述符,my_addr是个指向包含有本机IP地址及端口号等信息的sockaddr类型的指
针;addrlen常被设置为sizeof(struct sockaddr)。
struct sockaddr结构类型是用来保存socket信息的:
struct sockaddr
{
unsigned short sa_family; /* 地址族, AF_xxx */
char sa_data[14]; /* 14 字节的协议地址 */
};
sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;
sa_data则包含该socket的IP地址和端口号。
另外更有一种结构类型:
struct sockaddr_in
{
short int sin_family; /* 地址族 */
unsigned short int sin_port; /* 端口号 */
struct in_addr sin_addr;/* IP地址 */
unsigned char sin_zero[8]; /* 填充0 以保持和struct sockaddr同样大小*/
};
这个结构更方便使用。
sin_zero用来将sockaddr_in结构填充到和struct sockaddr同样的长度,能用bzero()或memset()函数将其置为零。指向sockaddr_in的指针和指向sockaddr的指针能相互转换,这意味着如果一个函数所需参数类型是sockaddr时,你能在函数调用的时候将一个指向sockaddr_in的指针转换为指向sockaddr的指针;或相反。
来源: ChinaUnix博客 作者: ChinaUnix博客
本文介绍了Sockfd的概念,它是socket函数返回的描述符。同时详细解释了sockaddr和sockaddr_in两种结构类型,包括它们的成员变量及其用途。sockaddr用于保存socket信息,而sockaddr_in则是更易于使用的版本。
521

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



