typedef struct sockaddr_in

来源:互联网 发布:国家地理域名德国 编辑:程序博客网 时间:2024/05/22 10:38

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的指针;或者相反。

原创粉丝点击