RedHat Socket 收不到数据包
RedHat Socket not receiving packets
我目前 运行 RedHat 上的一个应用程序导致了一些问题。
我有两台计算机 运行 RedHat 并使用 UDP 套接字进行通信。
两端都正确创建了套接字,客户端正确绑定了服务器。当客户端发送消息时,我可以看到服务器端使用 TCPDump 正确接收了消息,但从未调用套接字上的函数 Receive(),应用程序什么也不做。
当我在本地主机上执行此操作时,应用程序运行良好。
有人知道问题出在哪里吗?
当您执行 tcpdump
时,您实际上是在尝试了解数据包是否已到达目标机器,而不是实际目标(即正在侦听的应用程序,换句话说是您的服务器程序)。 tcpdump
只能保证数据包到达服务器机器并且 TCP 堆栈有它。现在由您的应用程序(即服务器程序)来使用它。这只有在 recv()
成功时才会发生。您始终可以了解所有套接字功能背后的错误并执行必要的纠正措施。
我目前 运行 RedHat 上的一个应用程序导致了一些问题。 我有两台计算机 运行 RedHat 并使用 UDP 套接字进行通信。
两端都正确创建了套接字,客户端正确绑定了服务器。当客户端发送消息时,我可以看到服务器端使用 TCPDump 正确接收了消息,但从未调用套接字上的函数 Receive(),应用程序什么也不做。
当我在本地主机上执行此操作时,应用程序运行良好。
有人知道问题出在哪里吗?
当您执行 tcpdump
时,您实际上是在尝试了解数据包是否已到达目标机器,而不是实际目标(即正在侦听的应用程序,换句话说是您的服务器程序)。 tcpdump
只能保证数据包到达服务器机器并且 TCP 堆栈有它。现在由您的应用程序(即服务器程序)来使用它。这只有在 recv()
成功时才会发生。您始终可以了解所有套接字功能背后的错误并执行必要的纠正措施。