完整中文VC# Visual C#数据库高级教程
(1) 地址结构相关处理数据结构:首先介绍两个重要数据类型:sockaddr
和sockaddr_in
,这两个结构类型都是用来保存socket信息的,如下所示:
struct sockaddr {
unsigned short sa_family; // 地址簇
char sa_data[14]; // 14字节的协议地址,包含socket的IP地址和端口号
};
struct sockaddr_in {
short int sin_family; // 地址族
unsigned short int sin_port; // 端口号
struct in_addr sin_addr; // IP地址
unsigned char sin_zero[8]; // 填充0保持与struct sockaddr同样大小
};
这两个数据结构是等效的,可以相互转化,通常sockaddr_in
数据类型使用更为普遍。在建立sockaddr
或sockaddr_in
后,就可以对该socket进行适应的操作了。
(2) 数据存储优先顺序:计算机数据存储有两个字节优先顺序:高位字节优先和低位字节优先。Internet上的数据是高位字节优先顺序在网络上传输,因此在有些情况下,需要对这两个字节存储优先顺序进行相互转化。这里用到四个函数:htons
、ntohs
、htonl
、ntohl
。这四个函数分别为实现网络字节序和主机字节序的转化,其中h代表host,n代表network,s代表short,l代表long。通常16位的IP端口号用s代表,而IP地址用l表示。
(3) 地址格式转化:通过用户在表示地址时采用的点分十进制表示的数值(或者是以冒号分开的十进制IPv6地址),而在通常使用的socket编程中所使用的则是二进制值,这就需要将两个数值进行转换。这里在IPv4中用到的函数有inet_aton
、inet_addr
和inet_ntoa
,而IPv4和IPv6兼容的函数有inet_pton
和inet_ntop
。IPv6是下一代互联网标准协议,将在下节做简单介绍,这里先介绍IPv4。这里inet_pton
函数是将点分十进制地址映射为二进制地址,而inet_ntop
则相反。函数格式:
inet_pton
函数:
所需头文件:#include
函数原型:int inet_pton(int family, const char *strptr, void *addrptr)
参数说明:family:AF_INET(IPv4)、AF_INET6(IPv6协议)
如果你对更多格式转化有兴趣,可以参考以下资源:java格式转化、编码格式转化、字幕格式转化、格式转化器、格式转化大师、YUV格式转化为PPM格式、yuv格式转化为GBR格式、tif格式转化为pdf格式、C++网络字节顺序转换函数ip格式转换函数、PDF格式转化为JPG格式软件、pdf格式文档转化为Word格式、将JPEG格式转化为BMP格式、dwg格式转化成shp格式、方正格式转化为pdf格式、格式工厂用于转化文件格式、小说格式转化器、HEIF照片格式转化、PDF转化WORD格式、CAD转化格式软件、Java时间格式转化。