转自:http://www.cnblogs.com/s7vens/archive/2011/12/12/2284892.html

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

网络字节顺序与本地字节顺序之间的转换函数:

htonl()--"Host to Network Long"
ntohl()--"Network to Host Long"
htons()--"Host to Network Short"
ntohs()--"Network to Host Short"

之所以需要这些函数是因为计算机数据表示存在两种字节顺序:NBO与HBO

网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。

主机字节顺序(HBO,Host Byte Order): 不同的机器HBO不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。
如 Intel x86结构下, short型数0x1234表示为34 12, int型数0x12345678表示为78 56 34 12  
如 IBM power PC结构下, short型数0x1234表示为12 34, int型数0x12345678表示为12 34 56 78
   
由于这个原因不同体系结构的机器之间无法通信,所以要转换成一种约定的数序,也就是网络字节顺序,其实就是如同power pc那样的顺序. 在PC开发中有ntohl和htonl函数可以用来进行网络字节和主机字节的转换.

htonl(), ntohl(), htons(), ntohs() 函数相关推荐

  1. htonl(), ntohl(), htons(), ntohs() 函数具体应用

    htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...

  2. htonl ntohl htons ntohs

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

  3. 【PackUnPack】htonl、htons、ntohl、ntohs函数实现

    网络字节序是大端 参考: htonl.htons.ntohl.ntohs函数实现 判断是大端还是小端 小端时,(ENDIANNESS=='l') static union { char c[4]; u ...

  4. 模拟htonl、ntohl、htons、ntohs函数实现

    模拟htonl.ntohl.htons.ntohs函数实现 2010-04-14 17:25:06|  分类: 网络编程 |  标签: |字号大中小 订阅 From: http://wxxweb.bl ...

  5. Linux网络通信----htonl()、htons()、ntohl()、ntohs()四个函数

    转载:https://blog.csdn.net/miao19920101/article/details/69398158 前言: 今天在工作中用到htonl()这个函数,不是很理解,查阅资料之后随 ...

  6. htonl、ntohl、htons、ntohs函数实现

    转载:https://blog.csdn.net/lizhi200404520/article/details/7290193 因为,有符号数右移会发送补符号位1的情况,所以,以下会对原数强制类型转换 ...

  7. htons、htonl、ntohl、ntohs的区别与使用

    文章目录 1.网络编程字节转换 2. 主机字节顺序<-->网络字节顺序 3.大小端模式 1.网络编程字节转换 s表示短.l表示长: ntohs =net to host short int ...

  8. 网络字节顺序和主机字节顺序的转换(htons ntohs htonl ntohl)

    from  https://blog.csdn.net/baidu_33621692/article/details/53213002 网络字节顺序和主机字节顺序的转换(htons ntohs hto ...

  9. ntohs, ntohl, htons,htonl

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

最新文章

  1. 带你100% 地了解 Redis 6.0 的客户端缓存
  2. [TypeScript] Using Interfaces to Describe Types in TypeScript
  3. JS操作DOM元素属性和方法
  4. Java基础:动态代理
  5. Zookeeper 服务注册与发现02——服务消费者
  6. python装饰器执行顺序
  7. 阿里云服务器(windows2012)
  8. 运行Myeclipse时,如何删除IVM窗口
  9. 2_C语言中的数据类型 (一)2.1.常量和字符串常量
  10. smart原则_真正的有效目标--SMART原则
  11. 谷歌浏览器开发者模式
  12. 74hc595数码管C语言,74HC595 数码管程序
  13. 华为ENSP进行evn实验,尚不完整,但已经有RT1、RT2、RT3、RT4了
  14. IDEA 设置终端管理员权限
  15. 基于FPGA的目标颜色识别追踪三——FIFO(同/异步FIFO)、DDR3
  16. 保险公司免费赠送保险可信吗?
  17. 2017风口之变:创业者的焦虑与希望
  18. 爬取了知乎2.2亿阅读量 有漂亮女朋友是什么体验,结果发现...
  19. XCTF mobile新手区解题记录(WP)以及一些总结和思考
  20. python短信验证码登录_玩转python之获取短信验证码

热门文章

  1. Primefaces dataTable设置某个cell的样式问题
  2. .典型用户 - 场景
  3. python 怎么算l2范数_数学推导+纯Python实现机器学习算法13:Lasso回归
  4. java response 获得code_Java教程分享使用HttpClient抓取页面内容
  5. java 英文字符串排序_英文字符串排序算法
  6. python基本运算符_06-Python基础知识学习---基本运算符
  7. lgg6可以root的版本_Kali Linux 2020.1版本变更内容
  8. uC/OS-II OS_TASK.C中有关任务管理的函数
  9. 【视觉项目】【day4】8.24号实验记录(消除瓶子内部“边缘”)
  10. python 示例_带有示例的Python date isocalendar()方法