Sockfd是调用socket函数返回的socket描述符,my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;addrlen常被设置为sizeof(struct sockaddr)。
**********************************************************************************************************************************
struct sockaddr结构类型是用来保存socket信息的:
struct sockaddr {
u_short sa_family; /* address family *//* 地址族, AF_xxx */
char sa_data[14]; /* up to 14 bytes of direct address *//* 14 字节的协议地址 */
};
其中:sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;sa_data则包含该socket的IP地址和端口号。
**********************************************************************************************************************************
另外还有一种结构类型更方便使用:
struct sockaddr_in {
short sin_family; /* 地址族 */
u_short sin_port; /* 端口号 */
struct in_addr sin_addr; /* IP地址 */
char sin_zero[8]; /* 填充0 以保持与struct sockaddr同样大小 */
};
其中:sin_zero用来将sockaddr_in结构填充到与struct sockaddr同样的长度,可以用bzero()或memset()函数将其置为零。
**********************************************************************************************************************************
注:指向sockaddr_in 的指针和指向sockaddr的指针可以相互转换,这意味着如果一个函数所需参数类型是sockaddr时,你可以在函数调用的时候将一个指向sockaddr_in的指针转换为指向sockaddr的指针;或者相反。