我正在尝试新的C++套接字编程。我对理解htons、htonl和相关函数的功能有些困难。我读了一些文件,但我的问题如下,
对于一台服务器和一台客户机,我使用htons两边的端口号,代码运行良好。即使我不使用这些函数,而且我的两个服务器客户端都是基于Intel的64位计算机,代码也可以正常工作。但是,如果多个客户机尝试连接我的服务器,而这些客户机使用不同的数据存储格式,该怎么办。例如,x86是little-endian,ARM A-53是little-and-big-endian等,其中一些是32位、16位或64位等,我的服务器是64位。所以我现在很困惑,我必须使用哪些功能来统一地服务于所有目的?或者,我必须始终检测客户机类型并将其数据格式(端口号)转换为64位(因为我的服务器是64位的),然后使用htonl()函数到达服务器。如果我走错了路,请有人回复或指点我。。。
最佳答案
你问这个问题很好。这表明你在担心正确的事情。
此处的文档:
http://linux.die.net/man/3/htonl
请注意,无论您在哪个系统上,参数和返回类型都有特定的大小。