Chinaunix首页 | 论坛 | 博客
  • 博客访问: 243267
  • 博文数量: 59
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 20:21
文章分类

全部博文(59)

文章存档

2011年(1)

2009年(58)

我的朋友

分类: 系统运维

2009-04-02 15:10:23

IPv4套接口地址,定义在头文件中。
struct in_addr {
in_addr_t s_addr;
};
struct sockaddr_in {
uint8_t        sin_len;
sa_family_t    sin_family;
in_port_t      sin_port;
struct in_addr sin_addr;
char           sin_zero[8];
};
说明:
.POSIX规范只需要这个结构中的3个成员:sin_family,sin_port,sin_addr。
.长度成员简化了变长套接口地址结构的处理。
.in_addr_t必须是一个至少32位的无符号整数类型,in_port_t必须是一个至少16位的无符号整数类型,而sa_family_t可以是任何无符号整数类型,一般在支持变长成员的实现中,它是一个8位的无符号整数,而在不支持长度成员的实现中,它是一个无符号的整数。
.sa_family_t与socklen_t定义在中,in_addr_t与in_port_t定义在中。
.sin_addr成员是一个结构的原因是,早期的版本中,将in_addr结构定义为不同结构的联合,以允许访问32位IPv4地址中的每个字节,或者2个16位值中的任一个。但是随着子网划分技术的来临和无类地址编排的出现,各种地址类正在消失,这就不需要联合了。

通用套接口地址结构
struct sockaddr{
uint8_t      sa_len;
sa_family_t  sa_family;
char         sa_data[14];
};

IPv6套接口地址结构:(略)
新的通用套接口地址结构:sockaddr_storage

阅读(861) | 评论(0) | 转发(0) |
0

上一篇:TCP连接终止

下一篇:基本的TCP套接口编程

给主人留下些什么吧!~~