GCC头文件

本文详细介绍了Unix/Linux系统中的基本数据类型,如size_t、time_t、pid_t等,并深入探讨了socket API及其使用方法,以及如何在不同地址族之间进行地址转换。同时,解释了struct sockaddr和struct sockaddr_in的结构定义和作用,以及它们在实现网络通信中的应用。

<sys/types.h>

基本系统数据类型

是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。

<sys/socket.h>

声明了各种socket方法,包括socket(),bind(),connect(),send()等等。

<netinet/in.h>互联网地址族

struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。

struct sockaddr {
unsigned short sa_family;  /* 地址族, AF_xxx */
char sa_data[14];  /* 14字节的协议地址*/
};

上面是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换
struct sockaddr_in {
short int sin_family; /* 地址族 */
unsigned short int sin_port; /* 端口号 */
struct in_addr sin_addr; /* Internet地址 */
unsigned char sin_zero[8]; /* 与struct sockaddr一样的长度 */
};

struct in_addr就是32位IP地址。
struct in_addr {
unsigned long s_addr;
};


<arpa/inet.h>

各种地址类型的转换

1、处理器字节序与网络字节序之间的转换

htonl,htons,ntohl,ntohs四种方法(l表示long,32位;s表示short,16位)

2、二进制地址格式与点分十进制地址格式之间的转换

inet_addr和inet_ntoa只能用于IPV4

inet_ntop和inet_pton支持IPV4与IPV6

inet_ntop将网络字节序的二进制地址转换成文本字符串格式;inet_pton将文本字符串格式转换成网络字节序的二进制地址格式





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值