gpt4 book ai didi

c++ - 是否存在任何统一函数而不是 htons htonl

转载 作者:太空宇宙 更新时间:2023-11-04 05:36:36 24 4
gpt4 key购买 nike

我正在尝试新的 C++ 套接字编程。我在理解 htons、htonl 和相关函数的功能时遇到了一些困难。我阅读了一些文档,但我的问题如下,

对于单个服务器和单个客户端,我在两端都使用 htons 作为端口号,代码工作正常。即使我不使用这些功能并且我的服务器客户端都是基于 Intel 的 64 位机器,代码也能正常工作。但是如果多个客户端尝试连接我的服务器并且客户端使用不同的数据存储格式怎么办?例如,x86 是小端,ARM A-53 是小端和大端等等,其中一些是 32 位、16 位或 64 位等。我的服务器是 64 位。所以我现在很困惑我必须使用哪些功能统一服务于所有目的?或者,我必须始终检测客户端类型并将其数据格式(端口号)转换为 64 位(因为我的服务器是 64 位),然后使用 htonl() 函数访问服务器。如果我走错了路,有人请回复或指出我会很棒......

最佳答案

这些函数在网络字节顺序(实际上是大端字节序)之间相互转换。无论您正在编程的架构是否如此,他们都会执行该任务(如果您使用的是大端架构,则它只是一个空操作)。

因此使用这些将使代码可移植。请注意,您不应在两次转换中都使用 htonl。当您将数据发送到另一台主机时,您在发送数据之前使用 htonl(主机到网络字节顺序),然​​后在接收时使用 ntohl(网络到主机字节顺序)。

请注意,ntohlhtonl 不能保证(虽然我不能举个例子)相同,因此您应该使用正确的。

关于c++ - 是否存在任何统一函数而不是 htons htonl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com