Network programming 接收到的数据包的字节顺序是什么

Network programming 接收到的数据包的字节顺序是什么,network-programming,Network Programming,我想用原始套接字编写一个接收器程序 它将使用recvfrom()来接收数据包 所以我想检查数据包的IP报头和tcp报头 当程序发送数据包时,它会注意网络字节顺序和主机字节顺序问题 但是对于我的recever程序,当我使用recvfrom(sockfd,mesg,1000,0,(struct sockaddr*)和cliaddr,&len)时 数据包中数据的字节顺序是什么?它是网络字节顺序还是主机字节顺序? 如何应对 例如 作者在处理收到的数据包时没有考虑字节顺序问题,为什么? 谢谢 数据包中数

我想用原始套接字编写一个接收器程序 它将使用recvfrom()来接收数据包 所以我想检查数据包的IP报头和tcp报头

当程序发送数据包时,它会注意网络字节顺序和主机字节顺序问题 但是对于我的recever程序,当我使用
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吗。换句话说,即使字节顺序是主机字节顺序,我仍然可以使用这两个函数?