SOCKET 网络字节序与主机字节序及其相互转换

来源:互联网 发布:日程规划软件 编辑:程序博客网 时间:2024/06/01 22:13

主机字节序:整数在内存中保存的顺序

两种方式:

Little endian 将低序字节存储在起始地址

Big endian    将高序字节存储在起始地址

网络字节序:整数在网络中的发送顺序

标准规定

Big endian   首先发送高位字节

字节序转换函数

htonl: 转换long类型到网络字节序

htons: 转换short类型到网络字节序

ntohl: 转换网络字节序到long类型

ntohs: 转换网络字节序到short类型

inet_addr: 将字符串格式IP转换到网络字节序

inet_ntoa: 将网络字节序格式IP转换到字符串

举例:SOCKADDR_IN中的数据格式

SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(5120);
addr.sin_family = AF_INET;

该结构体中的成员sin_addr, sin_port使用的是网络字节序

sin_addr:

inet_addr()返回的已经是网络字节序

 

原文地址:http://blog.csdn.net/icedmilk/article/details/5336296

0 0
原创粉丝点击