socket编程中的 htons()

article/2025/9/20 9:08:12

文章目录

  • 1.内存存储数据的方式
    • 1.1 数据字节序号
    • 1.2 小端字节序
    • 1.3 大端字节序
  • 2. 转换顺序
    • 2.1 网络字节序
    • 2.2 主机字节序
    • 2.3 转换函数

  在刚刚接触 socket 时,遇到了 htons() 函数,就直接懵逼了,这是什么东西,有什么用?就查了一些资料。

  htons() 是网络字节序与主机字节序之间转换的函数。用生活中的例子来说,有一串数字 12345678 现在我们是从左往右读的,以前的人是从右往左读的。当你要给以前的人读的话就要把这串数据写成 87654321 。htons() 就是类似要完成这个转换的功能

1.内存存储数据的方式

  大于一个字节的数据在内存中有存放的顺序,一个字节的数据没有顺序的问题。存放的顺序就叫做字节顺序。

  那么在内存中存放大于一个字节的数据的方式有哪些?或者说顺序有哪些。内存中存储的方法有两种:小端字节序(little-endian)和大端字节序(big-endian)。

1.1 数据字节序号

  低序字节,就是一个数据的低序号字节。比如说一个数据是这样的 0x12345678 ,它是一个32位(4个字节)的整数数据。就是把这个数据放在4个字节里面。如下图
在这里插入图片描述
  12 是放在第一个字节里面的,第一个字节是高序号。第二个,第三个,第四个字节的序号依次降低。存放 78 的字节是最低序号。

1.2 小端字节序

  小端字节序——将低序字节存储在内存起始地址。用这个数据来说就是先存 78 ,然后存 56 ,接着存 34 ,最后存12。

在这里插入图片描述
在这里插入图片描述

1.3 大端字节序

  先将高序号的字节数据存入内存的起始地址。12 是存在高序号的字节里面,先将 12 存入内存的起始位置,接着是 34 ,56 ,78。
在这里插入图片描述

2. 转换顺序

  这两种字节序之间没有标准可循,两种格式都有系统使用。比如,Inter x86、ARM核采用的是小端模式,Power PC、MIPS UNIX和HP-PA UNIX采用大端模式。

2.1 网络字节序

  网络字节序:网络字节序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节序采用大端(big endian)排序方式。

2.2 主机字节序

  主机字节序:不同的机器主机字节序不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。

2.3 转换函数

  由于不同的机器主机字节序不同原因不同体系结构的机器之间无法通信,所以要转换成一种约定的字节序,也就是网络字节序即使是同一台机器上的两个进程(比如一个由C语言,另一个由Java编写)通信,也要考虑字节序的问题(JVM采用大端字节序)。

  网络字节序与主机字节序之间的转换函数: htons()…ntohs)…htonl()、ntohl).htons和ntohs完成16位无符号数的相互转换,htonl和ntohl完成32位无符号数的相互转换。host to network short long


http://chatgpt.dhexx.cn/article/q3vfkRQf.shtml

相关文章

高并发解决方案——Redis(一)

简介 Redis作为重要的缓存数据库在高并发的解决方案中起着重要作用。为了系统的学习Redis,也为了秋招(美团比较关注Redis 的掌握),计划编写该系列博客,也是为了整理知识点。 本篇主要介绍了Redis的基础知识与原理。之…

Jmeter超高并发解决方案

背景一亿用户量,平均每人每天10次的业务量,要求并发数在5000以上,峰值在5w到10w之间,QPS在25w以上 一、jmeter解决高并发的优化方案 1.1 优化监听(GUI模式,尽量不考虑) …

2023春招面试专题:高并发解决方案

如何理解高并发? 高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验。 我们常见的高并发场景有:淘宝的双11、春运时的抢票、微…

高并发解决方案之熔断处理

高并发解决方案之熔断处理 前言概念基本介绍三种状态熔断方式常用框架功能对比使用介绍 参考链接 前言 问题列表 跨系统、跨服务调用第三方接口时,第三方接口响应超时或者服务不可用,发生连锁故障进而导致雪崩效应。 举例说明 假设上游服务是A&#xff…

阿里云高并发解决方案

今天这篇帖子我会讲解一下金蝶财务软件K3_CLOUD高并发部署在阿里云上得解决方案,本篇博客同样适用于其他软件高并发上云部署 以我去年12月份的一个客户项目为例。 做过项目的朋友都知道,小客户比较关注的是成本,大客户关注的是价值和服务。高并发客户一般都会有专业的IT运…

高并发解决方案相关面试题

什么是DNS解析域名 DNS域名解析就是讲域名转化为不需要显示端口(二级域名的端口一般为80)的IP地址,域名解析的一般先去本地环境的host文件读取配置,解析成对应的IP地址,根据IP地址访问对应的服务器。若host文件未配置…

Token高并发解决方案

Token高并发解决方案 一:作为token使用的第三方 客户端模式使用token 可以采用单例模式或定义一个全局变量isRefresh 标志,加同步锁Synchronized来保证token过期的那个时间点,刷新token方法只被调用一次。 二:作为token服务器端…

大数据和高并发解决方案

一、网站应用背景 开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器一台数据库服务器一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能&…

电商中常见的高并发解决方案

目录 多级缓存 什么叫多级缓存 多级缓存的实现思路 Redis 缓存同步 MySql 数据 Nginx 限流 什么是限流 常见的限流算法之漏桶算法 nginx 限流的方式 控制速率 控制并发量(连接数) 在本文中,我们将以京东为例,了解电商中…

【数据科学】斯皮尔曼的等级相关系数(Spearman's coefficient)

在统计数据中,斯皮尔曼的等级相关系数或斯皮尔曼的rho,以查尔斯斯皮尔曼命名并经常用希腊字母表示或,是秩相关的非参数度量(两个变量的排名之间的统计依赖性)。它评估了使用单调函数描述两个变量之间关系的程度。 两个…

python 利用Scipy计算person 和spearman相关系数

python 利用Scipy计算person 和spearman相关系数 觉得有用的话,欢迎一起讨论相互学习~ 学习以下两位大佬的讲解 (Pearson)皮尔逊相关系数和spearman相关系数(附python实现) 相关性系数及其python实现 皮尔逊相关系数 下面是皮尔逊相关系数的计算公式…

Python+pandas计算数据相关系数(person、Kendall、spearman)

pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数、Kendall Tau相关系数和spearman秩相关)。 pandas相关系数-DataFrame.corr()参数详解 DataFrame.corr(methodpearson, min_p…

相关性Correlations 皮尔逊相关系数(pearson)和斯皮尔曼等级相关系数(spearman)

相关性Correlations Correlations,相关度量,目前Spark支持两种相关性系数:皮尔逊相关系数(pearson)和斯皮尔曼等级相关系数(spearman)。相关系数是用以反映变量之间相关关系密切程度的统计指标。…

spearman学习

特征提取,预测都弄完了,现在要检查一下预测的效果。 spearman秩相关系数是度量两个变量之间的统计相关性的指标,用来评估当用单调函数来描述两个变量之间的关系有多好。在没有重复数据的情况下,如果一个变量是另外一个变量的严格…

R语言中进行Spearman等级相关分析

摘要 使用Spearman等级相关性测试两个等级变量或一个等级变量和一个测量变量之间的关联。 如果您担心非正态性,也可以对两个测量变量使用Spearman等级相关性而不是线性回归/相关性,但这通常不是必须的。 宏伟的军舰鸟(军舰鸟magnificens&…

相关系数pearson、spearman、kendall和R语言中的cor/or.test()

相关系数pearson、spearman、kendall和R语言中的cor/cor.test 1. 相关系数pearson、spearman、kendall2. R语言cor函数和cor.test函数 1. 相关系数pearson、spearman、kendall Pearson相关系数很简单,是用来衡量两个数据集的线性相关程度;而Spearman相关…

皮尔逊(Pearson)相关系数与spearman相关系数(Python实现)

概念介绍 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度。 相关系数大小解释 相关性绝对值无相关0 - 0.09弱相关0.1 - 0.3中相关0.3 - 0.5强相关0.5 - 1 表中所定的标准从某种意义上说是武断的和不严格的。 对相关系数的解…

3.1 相关系数(person与spearman)

1.1总体皮尔逊(person)相关系数: 在概率论与数理统计中我们学到,若两组数据X{x1,x2…xn}与Y{y1,y2…yn}为总体数据,则总体协方差为 它表示两个变量的总体误差,若XY相对于各自均值同…

斯皮尔曼相关(spearman)系数法

在分析指标与指标、指标与研究对象的影响程度时,很多时候会用到相关系数法,下面介绍一下斯皮尔曼相关系数法。 斯皮尔曼等级相关是根据等级资料研究两个变量间相关关系的方法。它是依据两列成对等级的各对等级数之差来进行计算的,斯皮尔曼等级…

Spearman 相关性分析法,以及python的完整代码应用

Spearman 相关性分析法 简介 Spearman 相关性分析法是一种针对两个变量之间非线性关系的相关性计算方法,同时,它不对数据的分布进行假设。该方法的基本思想是将两个(也可以多个)变量的值进行排序,并计算它们之间的等…