zoukankan      html  css  js  c++  java
  • 网络与主机字节转换函数:htons ntohs htonl ntohl

    网络与主机字节转换函数:htons ntohs htonl ntohl

    网络字节序:

      网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian(大端)排序方式。

    注:网络字节序转化为主机字节序时,一定要注意是否需要转换。网络字节序是确定的。

    大端与小端

      大端:低地址存高位 —— 网络字节序/主机字节序

      小端:高地址存低位 —— 主机字节序

      网络字节序一定是大端的(网络上传输的都是大端)

      主机字节序大小端都有可能,取决于当前计算机

    例子:

    注意:

      一个字节只能存储8位数据 所以存的是128b),而不是12312b)。

    为使网络程序具有可移植性,使同样的c代码在大端和小端计算机上编译都能正常运行,可以调用以下库函数做网络字节序与主机字节序的转换:

      #include<arpa/inet.h>

      uint32_t htonl(uint_32_t hostlong)

      uint16_t htons(uint_l6_t hostshort)

      uint32_t ntohl(uint_32_t netlong)

      uint16_t ntohs(uint_l6_t netshort)

      h:表示host  n:表示network    l:表示32位长整数    s:表示16位短整数

      htonsunsigned short类型从主机序转换到网络序
      htonl 把unsigned long类型从主机序转换到网络序
      ntohs 把unsigned short类型从网络序转换到主机序
      ntohl 把unsigned long类型从网络序转换到主机序

    注意:

      如果主机是小端字节序,这些函数将参数做相应的大小端转化然后返回,如果主机是大端字节序,这些函数不做转换,将参数原封不动的返回

  • 相关阅读:
    zt 必看: 原来PCIe技术原理这么简单!
    zt linux:centos 解决SSH连接Linux超时自动断开
    idea总结和未来的想法
    linux一些技巧
    zt如何解决Verilog目前不支持数组型端口定义!
    高速设计学习-干货!高速串行Serdes均衡之FFE
    zt:tcpdump抓包对性能的影响
    zt:TCP 学习
    verdi使用
    IE 浏览器下 button元素自动触发click?
  • 原文地址:https://www.cnblogs.com/yxbl/p/12627834.html
Copyright © 2011-2022 走看看