SOCKADDR_IN的基本结构

 我来答
桦南小伙fBU2
2016-05-12 · TA获得超过115个赞
知道答主
回答量:166
采纳率:0%
帮助的人:137万
展开全部

在windows/linux下有下面结构:
sockaddr结构
struct sockaddr
{
unsigned short sa_family;/*addressfamily,AF_xxx*/
char sa_data[14];/*14bytesofprotocoladdress*/
};
sa_family是地址家族,一般都是“AF_xxx”的形式。通常大多用的是都是AF_INET,代表TCP/IP协议族。
sa_data是14字节协议地址。
此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息。但一般编程中并不直接针对此数据结构操作,而是使用另一个与sockaddr等价的数据结构
sockaddr_in(在netinet/in.h中定义): struct sockaddr_in{short sin_family;/*Address family一般来说AF_INET(地址族)PF_INET(协议族)*/unsigned short sin_port;/*Port number(必须要采用网络数据格式,普通数字可以用htons()函数转换成网络数据格式的数字)*/struct in_addr sin_addr;/*IP address in network byte order(Internet address)*/unsigned char sin_zero[8];/*Same size as struct sockaddr没有实际意义,只是为了 跟SOCKADDR结构在内存中对齐*/};(在ws2def.h中定义): struct sockaddr_in{    #if(_WIN32_WINNT<0x0600)    short sin_family;    #else//(_WIN32_WINNT<0x0600)    address_family sin_family;    #endif//(_WIN32_WINNT<0x0600)    ushort sin_port;    in_addr sin_addr;    char sin_zero[8];}
(在WinSock2.h中定义): struct sockaddr_in {        short   sin_family;        u_short sin_port;        struct  in_addr sin_addr;        char    sin_zero[8];};
在linux下:
in_addr结构 typedef uint32_t in_addr_t;struct in_addr  {    in_addr_t s_addr;  };在windows下: typedef struct in_addr{    union{            struct { unsigned char s_b1,s_b2,s_b3,s_b4; } S_un_b;            struct { unsigned short s_w1,s_w2; } S_un_w;            unsigned long S_addr;    }S_un;}in_addr;更多参考:in_addr

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式