我遇到了Java Knopflerfish客户端软件包和PHP(CLI,而不是Web)服务器之间的套接字的奇怪问题。
当两者都位于localhost上时,客户端/服务器对正常工作,并且所有数据都成功传输。但是,当Java客户端存在于不同的计算机上时,与服务器的连接成功,但PHP脚本没有收到任何数据。数据包分析确认服务器接收到Java客户端发送的数据 - PHP似乎在获取它时遇到了问题。
另外请注意,我已经使用telnet作为客户端进行了一些测试。 PHP服务器脚本从任何主机接收所有数据。这让我相信这个问题与java设置套接字的方式有关,或者存在一些我不熟悉的网络问题。任何想法将不胜感激。如果需要,可以发布代码示例。
答案 0 :(得分:0)
您可能忘记在客户端刷新缓冲区。 telnet对每一行都进行了刷新,这样可以解释它为何起作用。
答案 1 :(得分:0)
原来这是竞争条件。如果我在接收连接之后和执行socket_read之前睡了几毫秒,那就很好地解决了这个问题。