Network programming 接收到的数据包的字节顺序是什么
我想用原始套接字编写一个接收器程序 它将使用recvfrom()来接收数据包 所以我想检查数据包的IP报头和tcp报头 当程序发送数据包时,它会注意网络字节顺序和主机字节顺序问题 但是对于我的recever程序,当我使用Network programming 接收到的数据包的字节顺序是什么,network-programming,Network Programming,我想用原始套接字编写一个接收器程序 它将使用recvfrom()来接收数据包 所以我想检查数据包的IP报头和tcp报头 当程序发送数据包时,它会注意网络字节顺序和主机字节顺序问题 但是对于我的recever程序,当我使用recvfrom(sockfd,mesg,1000,0,(struct sockaddr*)和cliaddr,&len)时 数据包中数据的字节顺序是什么?它是网络字节顺序还是主机字节顺序? 如何应对 例如 作者在处理收到的数据包时没有考虑字节顺序问题,为什么? 谢谢 数据包中数
recvfrom(sockfd,mesg,1000,0,(struct sockaddr*)和cliaddr,&len)时代码>
数据包中数据的字节顺序是什么?它是网络字节顺序还是主机字节顺序?
如何应对
例如
作者在处理收到的数据包时没有考虑字节顺序问题,为什么?
谢谢
数据包中数据的字节顺序是什么
按照惯例,网络顺序是大端顺序。然而,您收到的数据就是您发送的数据:没有人会神奇地修改“整数”以改变其尾数
如何应对
- 解释整数数据时使用
ntohl
和ntohs
- 请注意,位字段endianness不是标准值
作者在编写时没有考虑字节顺序问题
处理接收到的数据包
您发布的链接显示了ntohs
和ntohl
呼叫。作者至少在某种程度上处理了结尾
数据包中数据的字节顺序是什么
按照惯例,网络顺序是大端顺序。然而,您收到的数据就是您发送的数据:没有人会神奇地修改“整数”以改变其尾数
如何应对
- 解释整数数据时使用
ntohl
和ntohs
- 请注意,位字段endianness不是标准值
作者在编写时没有考虑字节顺序问题
处理接收到的数据包
您发布的链接显示了ntohs
和ntohl
呼叫。作者至少在某种程度上处理了endianness。但是在链接中,作者没有考虑顺序问题,为什么?你的意思是作者的程序中存在一些问题,因为他没有仔细考虑endianness问题?@user138126我没有阅读全部代码。我只是提到了作者处理endianness,至少在某种程度上是这样。代码可能是完全正确的。我不明白这一点:没有人会神奇地修改“整数”来改变它们的尾数。如果我不知道发送方程序,也不知道发送数据的字节顺序,我还能使用ntohs和ntohl吗。换句话说,即使字节顺序是主机字节顺序,我仍然可以使用这两个函数?但在链接中,作者没有考虑顺序问题,为什么?你的意思是作者的程序中存在一些问题,因为他没有仔细考虑端点问题?@user138126我没有阅读全部代码。我只是提到了作者处理endianness,至少在某种程度上是这样。代码可能是完全正确的。我不明白这一点:没有人会神奇地修改“整数”来改变它们的尾数。如果我不知道发送方程序,也不知道发送数据的字节顺序,我还能使用ntohs和ntohl吗。换句话说,即使字节顺序是主机字节顺序,我仍然可以使用这两个函数?