网络编程之字节序

简介: 网络编程之字节序

字节序


计算机数据表示存在两种字节顺序:网络字节顺序NBO(Network Byte Order)与主机字节顺序HBO(Host Byte Order)或者是大端模式和小端模式


网络字节序(大端模式)


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


主机字节序(小端模式)


主机字节顺序HBO: 不同的机器HBO不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。(大端和小端模式与cpu设计有关而和操作系统无关)


特征


a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。


字节序转换函数


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

htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序

ntohs和ntonh函数,是用来将主机字节顺序转换为网络字节顺序


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


注意


htonl 是针对32位,4个字节而言

htons 是针对16位,2个字节而言

数字所占位数小于或等于一个字节(8 bits)时,不要需转换。


目录
相关文章
|
4月前
网络编程之 字节序和深入理解bind()函数
在上一篇博客里,大家也许会对htons()感到疑惑吧,其实就是字节序的转换,所以这篇博客我们就来详细的解释一下什么是字节序。
38 0
|
2月前
|
网络协议 算法 Java
|
4月前
|
Java 数据格式
最新Java基础系列课程--Day15-网络编程(三)
最新Java基础系列课程--Day15-网络编程
|
4月前
|
存储 网络协议 Java
最新Java基础系列课程--Day15-网络编程(二)
最新Java基础系列课程--Day15-网络编程
|
7天前
|
网络协议 Java 网络架构
Java基础教程(18)-Java中的网络编程
【4月更文挑战第18天】Java网络编程简化了底层协议处理,利用Java标准库接口进行TCP/IP通信。TCP协议提供可靠传输,常用于HTTP、SMTP等协议;UDP协议则更高效但不保证可靠性。在TCP编程中,ServerSocket用于监听客户端连接,Socket实现双进程间通信。UDP编程中,DatagramSocket处理无连接的数据报文。HTTP编程可以通过HttpURLConnection发送请求并接收响应。
|
15天前
|
监控 网络协议 Java
《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)
《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)
22 0
《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)
|
15天前
|
监控 Java 开发者
深入理解 Java 网络编程和 NIO
【4月更文挑战第19天】Java网络编程基于Socket,但NIO(非阻塞I/O)提升了效率和性能。NIO特点是非阻塞模式、选择器机制和缓冲区,适合高并发场景。使用NIO涉及通道、选择器和事件处理,优点是高并发、资源利用率和可扩展性,但复杂度、错误处理和性能调优是挑战。开发者应根据需求选择是否使用NIO,并深入理解其原理。
|
17天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
26天前
|
域名解析 网络协议 Java
java网络编程
java网络编程
|
2月前
|
网络协议 安全 Java
Java网络编程
Java网络编程

相关课程

更多