Linux(网络编程):03---本地字节序、网络字节序

一、本地字节序、网络字节序

  • 本地字节序:数值的存储是先存地位,再存高位
  • 网络字节序:数值的存储是先存高位,再存地位

例如:有一个数0x123456

  • 本地字节序存储为:0x123456
  • 网络字节序存储为:0x563412

二、点分十进制与网络字节序的相互转换

  • 网络编程中,网络只识别网络字节序的格式,所以点分十进制的字符串格式网络不识别。
  • 下面是点分十进制与网络字节序之间的转换

下面函数用到的头文件

  • #include <sys/socket.h>
  • #include <netinet/in.h>
  • #include <arpa/inet.h>

本地字节序-->网络字节序的二进制

①in_addr_t  inet_addr(const char *cp);

  • 参数:点分十进制的字符串
  • 返回值:in_addr_t类型,网络字节序的int类型

②int inet_aton(const char *cp, struct in_addr *inp);

网络字节序的二进制-->本地字节序

char *inet_ntoa(struct in_addr in);

  • 参数:网络字节序的int类型
  • 返回值:点分十进制的字符串

三、端口号与网络字节序的转换

  • htons(int port);  //将参数转为网络字节序类型
  • 参数:端口的整型格式
  • 如果端口号为字符串,还需要用atoi将字符串转为整型,再转为网络字节序类型
  • htons(atoi("port"));

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88747204