首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GStack.HostToNetwork在印第的目的是什么?

GStack.HostToNetwork在印第的目的是什么?
EN

Stack Overflow用户
提问于 2021-03-04 21:07:58
回答 1查看 109关注 0票数 1

我看到了Indy,默认情况下,必须以某种“网络格式”发送的秘密数据,以及接收到的数据被转换回来。这样做有什么意义?在套接字的WriteRead之间,没有人使用那些只有"I“才知道它们的含义的值。那么,比特顺序有什么关系呢?我有自己的TCP客户端协议,我严格地将命令的值和发送的其他内容写入临时缓冲区。我想知道让我的协议变得复杂是否有意义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 21:21:56

i看到,在默认情况下,必须以某种“网络格式”发送的隐蔽数据,以及接收到的数据,将被转换回。这样做有什么意义?

并非所有平台都使用相同的endian对多字节整数中的字节进行排序。有些平台是小终端,有些是大端平台。为了便于跨平台共享整数,“网络字节顺序”被标准化为大端。因此,HostToNetwork()将将多字节整数从调用平台的本机endian转换为大端,而NetworkToHost()将将多字节整数从大端转换为调用平台的本地endian。

在写入和从套接字读取之间的

没有人使用那些只有"I“才知道它们的含义的值。那么,比特顺序有什么关系呢?

如果您同时编写发送方和接收方,那么您当然可以使用任何您想要的终端。但在通过网络连接传输整数时,通常只使用大端。也许有一天,你或其他人会为你的系统写一个不同的发送者/接收者,甚至在另一个平台上。因此,如果对整数使用标准化的endian,那么以后就不必担心互操作性问题了。

我有自己的TCP协议,我严格地将命令的值和发送的其他内容写入临时缓冲区。

当然,这只有在发送方和接收方使用相同的endian表示内存中的整数时才有效。

,我想知道用这些转换使我的协议复杂化是否有意义?

进行endian转换并不会使任何事情变得复杂,但它可以安全地保护它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66483055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档