Socket学习笔记二(本机与网络字节顺序的转换)

socket的初始化与IP地址的转换 socket是介于传输层和应用层之间的一个API,它比一般的网络前端更靠近底层,它可以直接基于TCP/UDP协议甚至网络层的IP协议进行编程。 WSAStartup()用于初始化windowssockets,返回WSADATA结构体,只有调用了WSAStartup()以后,才能继续调用windowssockets的其它API。需要包含头文件: #include "stdafx.h" #in 阅读详情
 

各个用户的硬件可能是不同的, 不同的机器对数据存储时其字节顺序是不一样的, 那么硬件已经决定了数据的存放结构不一样,为了保证各个硬件之间能够正确交换数据, 所有在网络上传播的数据就应该是同样的存储结构, 各个硬件都提供对应本机器的转换函数.

假设又这样两台机器,分别名为 A,B; 对于一个整数4,再A,B机器种存储的结构分别是

A ---- 0000 0100

B ---- 0100 0000

当然,这个假设不一定正确,仅仅为了说明问题.

按照我们所学,A机器的存储方式应该是正统的和正确的。但是没有人可以说B机器存储的不对,因为它自己会把0100 0000转换成0000 0100来计算的。

既然各种机器可能有各自不同存储数据的方式,当A机器的0000 0100传递给B机器的时候,B机器一定会得到一个错误的值。显而容见,B机器会吧0000 0100计算成 64而不是4,这违背了A机器的意愿。

所以约定了再网络种传输的时候,所有的机器用同一种传输方式,也就是说数据的字节顺序大家都使用一样的顺序。如果说所有的厂商规定了都使用A机器的方式(称为网络字节顺序),那么B机器必须提供一个函数,吧本机的存储结构转换成网络字节顺序传递出去,B机器收数据的时候也应该提供一个函数吧网络字节顺序的数据转换成本机能够识别的结构。

这两个函数分别是

htonl()  ------ host to network long型的数据

ltohl()  ------ network to host long型的数据

当然就有 htons() ntohs() 的函数, 这套函数由各个自己自己实现,所以实现肯定是不一样的,但是对外提供的接口是一样的。

计算机网络学习笔记(二)- Socket编程 计算机网络学习笔记(二)- Socket编程Socket API概述Socket抽象Socket API函数WSAStartup函数WSACleanup函数Socket函数Closesocket函数bind函数listen函数connect函数accept函数send, sendto函数recv, recvfrom函数setsockopt, getsockopt网络字节顺序转换函数网络应用的Soc... 阅读详情

相关推荐

C++ Socket 编程_bool socket(int nsockettype=sock_stream, long leve

看看建立一个简单的数据包有多少工作?哎呀,你将不得不使用 “cat” 来建立数据包头!这仅仅是个玩笑。对于流式套接字你要作的是 send() 发 送数据。对于数据报式套接字,你按照你选择的方式封装数据然后使用 sendto()。内核将为你建立传输层和 Internet 层,硬件完成网络访问层。这就是现代科技。现在结束我们的网络理论速成班。哦,忘记告诉你关于路由的事情了。但是我不准备谈它,如果你真的关心,那么参考 IP RFC。

2501_90222587的博客 765

XILINX的PCIE实现分析:LINUX下PCIE对应文件的介绍和使用

前几天实验了一下XILINX官方的提供的在UBUNTU平台下的PCIE驱动,以下文字做个简单记录和总结。时间有限简单写写,可能以后有补充。 1,在LINUX下安装驱动后在/dev/目录里面多了十多个xdma0_开头的设备。 设备一:xdma0_c2h_0设备:xdma0_c2h_0 是一个只读设备,用open函数打开后直接调用read函数进行读,如果FPGA段接的不是AXI STREAM,而是带有地址的AXI 接口,可以调用seek函数进行起始地址的指定。操作完毕后关闭文件用close函数。以下代码

mcupro的专栏 8365

健康保险费用预测:可解释机器学习在精算建模中的实战落地

健康保险费用预测是医疗AI与保险科技交叉领域的核心任务,本质是基于临床变量与社会因素对个体医疗支出进行风险量化。其技术原理需兼顾统计建模能力与监管可解释性,XGBoost+SHAP组合因支持特征归因、边际效应分析和临床可干预推演,成为保险精算场景的主流选择。该技术显著提升保费定价精度、降低偿付风险,并支撑DRG费用预警、团险核保辅助及再保险尾部风险评估等关键应用。本文聚焦真实产线中的时间序列验证、临床分层特征工程与监管红线指标(如Bias@90th、Calibration Slope),深入解析如何让模型不

weixin_33702545的博客 306

为公司的pcie接口FPGA板卡编写上位机软件——源文件分析1——逐行阅读并加以注释

#include <assert.h> #include <fcntl.h> #include <getopt.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unis...

qq_42067893的博客 2274

vscode+latex+bib文献管理

下载vscode 安装插件`` 在setting.json中配置 在.tex文件中编写论文内容,然后左侧TEX侧边栏中编译,如下图所示,中文用xelatex,英文用pdflatex;编译成功后,就可以查看pdf版本的论文了,我一般在浏览器显示。 涉及到文献编译:XXX.bib中存储文献管理内容;XXX.tex是文章内容,使用xelatex编译后会生成XXX.aux,ctrl+⋅ctrl+·ctrl+⋅打开命令行窗口,输入bibtex XXX(可以对aux文件进行编译,不需要加后缀),然后再xelatex.

小卜妞的博客 2548

图形学基础|屏幕空间反射(SSR)

图形学基础|屏幕空间反射(SSR) 文章目录图形学基础|屏幕空间反射(SSR)一、前言二、反射技术概述2.1 环境贴图反射2.2 IBL反射2.3 平面反射(Planar Reflections)2.4 屏幕空间反射(Screen Space Reflection)2.4.1 SSR的基本原理2.4.2 SSR的优缺点三、SSR(Screen-Space Reflection)实现3.1 Efficient GPU Screen-Space Ray Tracing3.1.1 2D Raymarching v

【黑键】 3万+

进制转换函数

//10->2 CString DecimalToBin(int iDecimal) { char c[20]; _itoa(iDecimal, c, 2 ); CString  str(c); return str; } //10->16 CString DecimalToHex(int iDecimal) { char c[20]; sprintf(c, "%x", i

HL_LOVE_C的博客 658

【Qt】QByteArray详解

对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。与编码(如 UTF-8、Latin-1)之间的桥梁(例如。• 补零规则确保奇数字符串能正确解析,避免数据截断。:内部自动分配和释放内存,无需手动管理。将输入的字符串视为十六进制编码数据,返回实际数据长度(不包括结尾的。的输入必须是有效的十六进制字符(,但针对 Qt 框架做了优化。:处理加密后的二进制结果(如。• 如果输入字符串长度为奇数,• 若输入长度为奇数,自动在。

CSUC的博客 1599

ntohs函数的意思

ntohs()是一个函数名,作用是将一个16位数由网络字节顺序转换为主机字节顺序 将一个无符号短整型数从网络字节顺序转换为主机字节顺序。 #include uint16_t ntohs(uint16_t netshort); netshort:一个以网络字节顺序表达的16位数。 本函数将一个16位数从主机字节顺序转换成网络字节顺序。 返回值: htons()返回一个网络字节顺序的值

qq_38171115的博客 1万+

CDD那些事 - DID and SecurityAccess

本文介绍了SecurityAccessSID27的安全访问配置流程:1.通过StateGroups添加Level2群组;2.在Classes定义L2子功能;3.配置4步解锁流程,选择对应解锁等级;4.在DiagnosticInstance设置请求响应。同时说明了DID配置的两种方式:在DIDs页面定义或通过Identification页面创建,前者定义更全面。文章还提到ServiceList支持view/edit模式,其中edit模式可配置DID的多服务支持(如同时支持SID22读取和SID2E写入),但该

ziteng21的博客 256

复合材料成型仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄

本文整理了一套完整的PAM-COMPOSITE复合材料成型仿真案例合集,涵盖模压、RTM、固化变形、SMC四大核心工艺,包含6个实操案例和1个全流程衔接案例。每个案例都配有详细的操作步骤、核心要点和缺陷排查方法,适用于不同水平的工程师和研究人员。案例内容源自实际项目,可直接复用,帮助用户快速掌握复合材料成型仿真的关键技术,解决褶皱、纤维堆积、气泡残留等常见问题,实现从铺层设计到强度校核的全流程仿真闭环。特别针对热固性/热塑性材料差异、RTM衍生工艺、链式仿真等难点提供了专项解决方案。

源代码杀手的博客 321

Linux网络通信:htonl(),htons(),ntohs(),ntohl()函数解释

Linux网络通信htonl(),htons(),ntohs(),ntohl()函数解释。

Whale_XH的Blog 3595

光学材料仿真软件:FDTD Solutions_(4).材料属性的定义与应用

在光学材料仿真软件中,材料属性的定义和应用是至关重要的一步。正确地定义材料属性可以确保仿真结果的准确性和可靠性。本节将详细介绍如何在FDTD Solutions中定义和应用不同的材料属性,包括介质材料、金属材料、色散材料等,并提供具体的代码示例和数据样例。介质材料是光学仿真中最常见的材料类型之一。在FDTD Solutions中,可以通过多种方式定义介质材料,包括使用预定义的材料库、自定义材料参数或导入材料数据文件。FDTD Solutions内置了一个丰富的材料库,包含了许多常用材料的光学性质。

kkchenjj的博客 1403

网络字节顺序

很少有人关心字节顺序(Byte Ordering),因为它真的很少用到。何为字节顺序呢?让我们先来看一个例子,假设现在有一个WORD类型的变量,它的值为0x7788,那么它在内存中是怎么存放的呢? 内存中: 低地址 ...

jadeshu的博客 1343

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1924

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Linux网络编程】socket编程“网络字节顺序”和“主机字节顺序”

1.大小端模式   在socket编程前,有必要知道大小端模式。大小端模式是指计算机内存中数据存放的模式,由CPU决定,与操作系统无关。大端模式(Big-endian,是指数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中,这种存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;与我们的阅读习惯一致。小端模式(Little-endian),是指数据...

只要思想不滑坡,想法总比问题多。 4164

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

关于网络传输字节顺序的问题: hton? or ntoh?

小知识:字节顺序 很少有人关心字节顺序(Byte Ordering),因为它真的很少用到。何为字节顺序呢?让我们先来看一个例子,假设现在有一个WORD类型的变量,它的值为0x7788,那么它在内存中是怎么存放的呢?内存中: 低地址 高地址 0x77 0x88

xiaoxiongli的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

网络字节顺序和机器顺序什么区别

网络字节顺序和机器顺序什么区别 存在两种字节顺序:NBO与HBO 网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。 主机字节顺序(HBO,Host Byte Order): 不同

P40614021的专栏 2210

关于网络传输字节顺序的问题: hton? or ntoh?-

note: from baidu search小知识:字节顺序 很少有人关心字节顺序(Byte Ordering),因为它真的很少用到。何为字节顺序呢?让我们先来看一个例子,假设现在有一个WORD类型的变量,它的值为0x7788,那么它在内存中是怎么存放的呢?内存中: 低地址 高地址0x770x88高地址 低地址0x770x88图3.7 两种字节顺序 事实上,对于不同的CPU、不同的操作系统,图3

Newweapon's Trace 2802

深入解析网络编程:Socket基础与操作详解

这是因为在网络传输中,需要保证数据的一致性。因此,当数据在网络中传输时,必须按照大端序排列。为了确保数据在网络中正确传输,需要将主机字节顺序(Host Byte Order)转换为网络字节顺序。我们通常使用的有两种数据类型:短型(两个字节)和长型(四个字节)。

无敌岩雀的博客 3591

第二讲 结构体 & 本机转换 & IP 地址和如何处理它们

结构体 终于谈到编程了。在这章,我将谈到被套接字用到的各种数据类型。 因为它们中的一些内容很重要了。 首先是简单的一个: socket描述符。 它是下面的类型: int 仅仅是一个常见的 int。 从现在起,事情变得不可思议了,而你所需做的就是继续看下去。注 意这样的事实:有两种字节排列顺序:重要的字节 (有时叫 “octet”,即八 位位组) 在前面,或者不重要的字节在前面。前一种叫“网络字节顺序 (Network Byte Order)”。有些机器在内部是按照这个顺序储存数据,而另外 一些则不然。当我说

芯片驱动开发实践 326

字节顺序

<br />计算机内存是如何存储一个多于一个字节的类型的数据呢,假如有1234H这个数一般有如下两种方式1 0x12 0x34     2.0x34 0x12<br />这种多字节数据类型的存储顺序即称为字节顺序。第一种是高字节在前,这种存储顺序称为大端(big-endian),第二种是低字节在前,这种存储顺序称为小端(little-endian)。Intel的x86系列CPU采用低字节顺序,而有些CPU 如:SUN SPARC以及网络传输协议TCP/IP采用的高字节顺序。我们大部分都在用Intel的x86

C++/MFC菜鸟 1054

Socket编程中常见的数据结构及转换函数

Socket编程中常见的数据结构及转换函数 引言:本篇笔记第一部分介绍socket套接字编程中常见的数据结构,第二部分介绍网络字节顺序、主机与网络字节顺序转换函数、IP地址转换函数。 一、Socket编程中常见的网络数据结构   下面介绍到的函数,都定义在netinet/in.h中,在ubuntu14.04下,其存储位置为/usr/include/netinet/in.h,可以cat打印...

邓博学习笔记 2180
上一篇: ECC加密算法入门介绍
下一篇: IP分类及网络掩码
xiaomantoubaba
博客等级 码龄23年 75粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值