字节序
- 大端:起始地址存储高序字节
- 小端:起始地址存储低序字节
网络协议都使用网络字节序(大端)。主机上的字节序称为主机字节序(有的系统采用大端,有的系统采用小端)
字节序转换函数函数原型
/* 有些系统中#include <netinet/in.h> */
#include <arpa/inet.h>
uint16_t htons(uint16_t host16bitvalue);
uint32_t htonl(uint32_t host32bitvalue);
uint16_t ntohs(uint16_t net16bitvalue);
uint32_t ntohl(uint32_t net32bitvalue);
函数名中
- h:host(主机序)
- n:net(网络序)
- s:short类型。16位
- l:long类型。32位。有的系统(如Digital Alpha)尽管long是64位,但htonl和ntohl返回的仍然是32位值
上面四个函数,进行主机序和网络序之间16和32位的转换。即IP地址和端口号的转换。