sockaddr详解-84页
来源:互联网 发布:自动打铃软件 编辑:程序博客网 时间:2024/04/27 05:12
struct sockaddr 是一个通用地址结构,用于存储参与(IP)Windows套接字通信的计算机上的一个internet协议(IP)地址。为了统一地址结构的表示方法 ,统一接口函数,使得不同的地址结构可以被bind()、connect()、recvfrom()、sendto()等函数调用。但一般的编程中并不直接对此数据结构进行操作,而使用另一个与之等价的数据结构sockaddr_in。这是由于Microsoft TCP/IP套接字开发人员的工具箱仅支持internet地址字段,而实际填充字段的每一部分则遵循sockaddr_in数据结构,两者大小都是16字节,所以二者之间可以进行切换。
sockaddr
其定义如下:
struct sockaddr {
unsigned short sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
};
说明:
sa_family :是2字节的地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF_INET。
sa_data : 是14字节的协议地址。
sockaddr_in
其定义如下:[2]
struct sockaddr_in {
short int sin_family; /* Address family */
unsigned short int sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
unsigned char sin_zero[8]; /* Same size as struct sockaddr */
};
sin_family:指代协议族,在socket编程中只能是AF_INET
sin_port:存储端口号(使用网络字节顺序)
sin_addr:存储IP地址,使用in_addr这个数据结构
sin_zero:是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。
而其中in_addr结构的定义如下:
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的含义,很显然它是一个存储ip地址的联合体有三种表达方式:
第一种用四个字节来表示IP地址的四个数字;
第二种用两个双字节来表示IP地址;
第三种用一个长整型来表示IP地址。
给in_addr赋值的一种最简单方法是使用inet_addr函数,它可以把一个代表IP地址的字符串赋值转换为in_addr类型,如addrto.sin_addr.s_addr=inet_addr("192.168.0.2");
其反函数是inet_ntoa,可以把一个in_addr类型转换为一个字符串。
- sockaddr详解-84页
- sockaddr详解
- 详解struct sockaddr
- sockaddr sockaddr_in详解
- sockaddr和sockaddr_in详解
- sockaddr
- sockaddr
- Linux编程 sockaddr_in sockaddr in_addr详解。
- sockaddr与sockaddr_in,sockaddr_un结构体详解
- struct sockaddr struct sockaddr_in struct sockaddr_un 结构详解
- sockaddr&sockaddr_in
- struct sockaddr
- SOCKADDR结构
- struct sockaddr {
- sockaddr数据结构
- sockaddr_in、sockaddr(SOCKADDR)、in_addr 的区别
- sockaddr和sockaddr_in
- sockaddr 和sockaddr_in
- IBM Cognos 10.2.0 安装全过程
- 常用正则表达式的用法和介绍
- VIJOS 1737 选择客栈
- cmd命令操作Windows注册表
- 【Android】对话框
- sockaddr详解-84页
- linux 错误返回值
- 简明 Vim 练级攻略(转自人人)
- mbuf详解-84页
- 学习知识点
- 网络游戏服务器端开发心得之网络
- [MySQL 工具] pt-mysql-summary使用分析mysq数据库
- Ubuntu 安装 Hive
- vim常用命令