最新消息:

Linux Socket 学习笔记4–地址结构

C/C++ admin 3032浏览 0评论

每一种通信协议都对网络地址格式做了明确的规定,地址族的作用就是指明使用哪一种地址类型。

BSD定义了一个通用的地址结构:

1
2
3
4
5
6
7
struct sockaddr{
 
sa_family_t   sa_family;
 
char                sa_data[14];
 
};

其中sa_family_t是一个无符号的整形。虽然这个通用结构对编程者来说没什么用处,但是它为其他的地址结构提供了一个 重要的参考。

在linux中,使用最普遍的地址族是AF_INET,TCP/IP协议就使用具有IPv4地址的套接口,下面是C语言描述的结构sockaddr_in:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<netinet/in.h>
 
struct sockaddr_in{
 
sa_family_t      sin_family;    //地址族
 
unit16_t           sin_port;      //端口号
 
struct in_addr   sin_addr;     //Internet地址
 
unsigned          sin_zero[8];  //占位字节
 
};
 
struct in_addr{
 
unit32_t        s_addr;
 
};

在TCP/IP协议中,sin_family将被初始化为AF_INET,sin_zero[8]的 作用仅仅是对齐,实际使用时不用初始化。

转载请注明:爱开源 » Linux Socket 学习笔记4–地址结构

您必须 登录 才能发表评论!