美文网首页
网络编程之大小端

网络编程之大小端

作者: zhimingcow | 来源:发表于2018-09-01 00:31 被阅读12次

大端&小端

用C/C++写网络程序时,要注意字节的网络顺序和主机顺序的问题。

  • 大端:高位在前,低位在后
  • 小端:高位在后,低位在前

假设unsigned int num = 0x12345678,内存起始位置为0x4000,则在内存中的存放顺序为:

内存地址 小端模式 大端模式
0x4000 0x78 0x12
0x4001 0x56 0x34
0x4002 0x34 0x56
0x4003 0x12 0x78

网络字节顺序&主机字节顺序

  • 网络字节顺序:网络会将收到的第一个字节作为高位,并依次存放,即大端模式
  • 主机字节顺序:跟cpu有关,如Inter的cpu采用小端模式,IBM的cpu采用大端模式

也就是说我们在发送一个多字节数值的时候,需要确保发送前是大端模式,接收方再将大端模式转换为本机的大端或小端模式,即:

  • 发送者:在内存中应该以大端方式存放,即调用htonl()或htons()
  • 接收端:将网络字节顺序转换为主机字节顺序,即调用ntohl()或ntohs()

注意

数字所占位数小于或等于一个字节(8 bits)时,不要用htons转换。这是因为对于主机来说,大小尾端的最小单位为字节(byte)。

相关文章

  • 网络编程之大小端

    大端&小端 用C/C++写网络程序时,要注意字节的网络顺序和主机顺序的问题。 大端:高位在前,低位在后 小端:高位...

  • 大小端编程

    1、什么是大小端模式? 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的...

  • 网络编程

    网络编程 什么是网络编程   网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好...

  • Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊...

  • 30.3. 企业级开发进阶2.3:UDP编程

    ** 本节内容如下** 什么是UDP协议 UDP网络编程——服务端程序开发 UDP网络编程——客户端程序开发 1....

  • Golang网络编程TCP连接

    Golang网络编程 TCP编程编写服务端package mainimport ( "bufio" "fmt"...

  • Android网络编程

    网络编程 只有通过网络编程才能保持app的鲜活性,持久性 客户端Client:移动应用 服务器端Server:提供...

  • 0.netty基本概念

    传统的网络编程 在传统的java网络编程中,服务端一般构建一个ServerSocket用来监听接收客户端的请求,每...

  • python 教程笔记day11

    Python3网络编程 客户端

  • day23-总结

    python网络编程 socket编程(套接字):指的是通过代码来创建实现通信的两个端(客户端和服务端)socke...

网友评论

      本文标题:网络编程之大小端

      本文链接:https://www.haomeiwen.com/subject/prkywftx.html