我读过这一解释和这页手册关于htons、htonl、ntohl和ntohs的用法,但是我仍然不完全理解它们的用法(我对socket和一般的网络编程非常陌生)。我确实理解小、大端和字节顺序,但我不知道如何在我的聊天应用程序代码中正确地实现这些函数,以便它在不同的机器上一致工作(其中一个使用大端,另一个很少使用)。
针对我的具体情况,我有一个(几乎)完全工作的聊天应用程序,并且刚刚开始使用htons,但是经过一些研究之后,这似乎是不可靠的。我意识到这个问题可能看起来很相似,但是我在这里询问的是一个实现示例,我已经知道这些调用的基本功能。
发布于 2017-01-07 11:08:45
其思想是对整数类型有一些通用的表示形式。TCP/IP使用NBO,网络字节顺序。不管它是什么(大的、小的、或更奇特的),发送16位整数或32位数据的方法是在发送这样的数据之前使用htons或htonl。然后,当接收到它时,您必须用ntohs和ntohl将其转换回宿主表示形式。
发送方希望发送值uint32_t a,然后发送由htonl(a)返回的数据,例如d。
接收方获取d,应用ntohl(d)并获得正确的uint32_t值。
这些只是编解码功能。发送者发送代码(V),然后接收者得到解码(代码(V))!您不需要知道什么代码(V)等于(没有兴趣)。
如果你觉得它不可靠,那是因为你没有按它应有的方式使用它。
https://stackoverflow.com/questions/41519018
复制相似问题