一直以来都对这个两个函数含含糊糊的,今天又用到所以特意查看linux的源代码(/include/netinet/in.h)

# if __BYTE_ORDER == __BIG_ENDIAN
/* The host byte order is the same as network byte order,
   so these functions are all just identity.  */
# define ntohl(x) (x)
# define ntohs(x) (x)
# define htonl(x) (x)
# define htons(x) (x)
# else
#  if __BYTE_ORDER == __LITTLE_ENDIAN
#   define ntohl(x) __bswap_32 (x)
#   define ntohs(x) __bswap_16 (x)
#   define htonl(x) __bswap_32 (x)
#   define htons(x) __bswap_16 (x)
#  endif
# endif

从上面的头文件内容可以看出,ntohs和htons是一样的。如果平台是大字序的(如Pocket PC),则这些函数不作任何转换,只有在平台是小字序时(如X86),这些函数才进行相应的转换,htons和ntohs(以及htonl和ntohl)实际上没有任何区别,都是把字节序反转,只在于使用者对网络端和主机端理解意义的不同。

ntohs和htons区别?相关推荐

  1. ntohs和htons的区别

    虽然注册CSDN已经有好几年了,学习写程序也有两年的时间了.对于绝大数人来说,我还是得菜鸟.平时遇到什么问题也会来到这个平台搜索别人的解答.也从这个平台上获益很多. 今天在公司因为一个问题和同事就关于 ...

  2. ntohs, ntohl, htons,htonl的比较和详解

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  3. ntohs, ntohl, htons,htonl

    ntohs, ntohl, htons,htonl的比较和详解 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs( ...

  4. htons(), ntohl(), ntohs(),htons()这4个函数

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...

  5. socket绑定的ip为INADDR_ANY 的意义 htonl(INADDR_ANY)(0.0.0.0所有地址、不确定地址、任意地址)(htonl和htons区别)

    INADDR_ANY 表示监听0.0.0.0地址,socket只绑定端口,不绑定本主机的某个特定ip,让路由表决定传到哪个ip(0.0.0.0地址表示所有地址.不确定地址.任意地址)(一台主机中如果有 ...

  6. 网络字节与主机字节转换 htons(), ntohl(), ntohs(),htons() 函数

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...

  7. socket编程为什么需要htons(), ntohl(), ntohs(),htons() 函数

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...

  8. linux函数库之htons(), ntohl(), ntohs(),htons() 函数

    字节序分为大端字节序和小端字节序: 大端字节序: 是指一个整数的高位字节(32-31bit)存储在内存的低地址处,低位字节(0-7bit)存储在内存的高地址处. 小端字节序: 是指一个整数的高位字节( ...

  9. 为什么需要htons(), ntohl(), ntohs(),htons() 函数

    为什么需要htons(), ntohl(), ntohs(),htons() 函数: 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl ...

最新文章

  1. FORMS变量类型和消息提示
  2. sql server2008中怎样用sql语句创建数据库和数据表
  3. navicat无法连接远程mysql数据库_navicat无法远程连接mysql的解决方法
  4. LeetCode 6038. 向表达式添加括号后的最小结果
  5. 进程的优先级设置与获取,进程时间
  6. Nagios配置文件nagios.cfg详解
  7. 查询性能优化 in and union
  8. matlab写入二进制文件注意事项
  9. php的gd怎么打开,CentOS 中PHP开启 GD功能
  10. 软件项目管理知识点总结
  11. 复习了C++前几章,做一个ASCII码转换的小程序
  12. Kettle Spoon入门学习
  13. iperf工具源码下载、编译、以及测试网络带宽
  14. 微信排队小程序C语言,排队叫号微信小程序-【请排队】的构思和实现
  15. 矩阵的乘法与利用矩阵求解线性方程组
  16. 『地铁交换机作用』地铁交换机用哪个国家的
  17. L1-039 古风排版 (Java)
  18. 贪婪洞窟2 素材解密
  19. 在Github新建项目
  20. 红木家具之缅甸花梨家具

热门文章

  1. Codeforces - Bombs
  2. 补码加减法,溢出,超前进位
  3. oracle10g windows7
  4. Java 字节码技术:不积细流,无以成江河
  5. 返还delegation
  6. c语言 的表示方法,c语言运算符号的表示方法
  7. 嵌入式Linux常用命令
  8. java输出数组(java输出数组)
  9. 如何确定当前的iPhone /设备型号?
  10. 全网最细的Spring教程(一)