htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为高位字节存放在内存的低地址处。

htonl就是把本机字节顺序转化为网络字节顺序所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中)。但是计算机的内存存储数据时有可能是大尾顺序或者小尾顺序。先举个例子:int a = 0x403214;int b = htonl(a);我在VC++6.0调试这段代码,发现&a的值为:0x0012ff44其中0x0012ff44、0x0012ff45、0x0012ff46、0x0012ff47这四个单元的值依次为:14、32、40、00,即0x403214这个数的高位部分存放在高位地址中,低位部分存放在低位地址中,即小尾顺序。&b的值为:0x0012ff40其中0x0012ff40、0x0012ff41、0x0012ff42、0x0012ff43这四个单元的值依次为:00、40、32、14,即把原数0x403214的高位部分存放在低位地址中,低位部分存放在高位地址中。由此可见,如果一个数以小尾顺序存储,经htonl函数调用后这个数的高地位字节会完全颠倒过来成为一个新的数。这个新的数在机器内部其实还是以小尾顺序存储的,但是相对于原来的数而言相当于是变成大尾顺序的了。long型的0x40写完整为:0x 00 00 00 40,共四个字节,调用htonl后四个字节颠倒顺序,为0x 40 00 00 00。同样,0x40 00 00 00调用htonl后变为0x 00 00 00 40,即0x40 

举例:


转载于:https://www.cnblogs.com/xuelisheng/p/9310804.html

Linux网络编程---htons函数的使用相关推荐

  1. linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...

  2. linux网络编程函数解析之——setsockopt / getsockopt用法

    linux网络编程函数解析之--setsockopt / getsockopt用法 工程中无线传输方面的东西用到了setsockopt(),getsockopt().网上相关博客很多,而且类似,原文出 ...

  3. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...

  4. Linux网络编程实例分析

    最近由于工作原因需要温习一下Linux网络编程的部分基础知识,因此对之前写的Socket网络通信的代码进行了进一步优化和拓展,在不关闭一次Socket连接的基础上,对服务端加入循环读写的功能,同时加入 ...

  5. [Linux网络编程学习笔记]套接字地址结构

    好久没有看那Linux网络编程这本书了,今天看到了重点部分-TCP套接字.下面先来看看套接字的地址结构 Linux系统的套接字可以支持多种协议,每种不同的协议都是用不同的地址结构.在头文件<li ...

  6. 基于UDP客户端服务器的编程模型-linux网络编程

    坚持在代码中注释,边读代码边学习Linux网络编程 使用到的发送函数原型: #include <sys/types.h>#include <sys/socket.h>ssize ...

  7. 【Linux网络编程】并发服务器之select模型

    00. 目录 文章目录 00. 目录 01. 概述 02. I/O复用技术概述 03. select模型服务器实现思路 04. select模型服务器实现 05. 附录 01. 概述 服务器设计技术有 ...

  8. 【Linux网络编程】并发服务器之多线程模型

    00. 目录 文章目录 00. 目录 01. 概述 02. 多线程服务器 03. 多线程服务器实现思路 04. 多线程服务器实现 05. 附录 01. 概述 服务器设计技术有很多,按使用的协议来分有 ...

  9. 【Linux网络编程】TCP网络编程中connect listen和accept三者之间的关系

    00. 目录 文章目录 00. 目录 01. TCP服务端和客户端流程 02. connect函数 03. listen函数 04. 三次握手 05. accept函数 06. 附录 01. TCP服 ...

  10. 【Linux网络编程】TCP编程

    00. 目录 文章目录 00. 目录 01. TCP概述 02. TCP特点 03. TCP中CS架构 04. TCP相关函数 05. TCP服务端示例 06. TCP客户端示例 07. 附录 01. ...

最新文章

  1. Windows cmd(DOS)命令窗口中echo命令ANSI转义显示彩色字或背景
  2. C/S和B/S两种模式
  3. Java类集-set
  4. 为什么php不能用了,为什么php不能做大型系统?
  5. Unity3D实践3:BOSS血条
  6. Ubuntu18.04谷歌输入法中文候选此框消失问题
  7. 数学基础加强2---概率论与贝叶斯先验
  8. 地籍cad的lisp程序大集合_超经典CAD_lisp程序集锦、CAD快捷键大全
  9. 宋宝华linux内核驱动代码,宋宝华 《Linux设备驱动开发详解》示例代码之fifo字符设备驱动...
  10. 三.修改Jenkins插件下载路径
  11. 朋友公司年会需要一个抽奖程序,我花1小时给她写了一个...
  12. Word365英文版,文字垂直居中
  13. python模拟登录163邮箱_用python实现模拟登陆163邮箱
  14. 现代 opengl 的驱动安装
  15. 极限编程中的十二个最佳实践
  16. 解决This is probably not a problem with npm. There is likely additional logging output above.的问题
  17. 风口起落的背后,是6271家创业公司的消亡
  18. 深度学习模型评价标准
  19. 破解Navicat全家桶
  20. SQL查询实现,记录排序编号

热门文章

  1. 2022-2-20stream流的复习
  2. 作用域和请求参数传递
  3. 计算机专业 美国,美国计算机专业的五大名校概况
  4. 二十四、JAVA集合框架(四)
  5. 在mysql数据库中创建Oracle数据库中的scott用户表
  6. RequestContextHolder 获取 ServletRequest 和 ServletResponse,Spring MVC ModelAndView 数据响应 Response
  7. 基于计算机 中学数学教学,计算机辅助中学数学教学的研究
  8. HDU2072 tri树/map/set/字符串hash
  9. VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法
  10. [置顶]灰のNOIP总结