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