PHP套接字写入然后读取是阻塞套接字

我有一个正在侦听请求的Java服务器和一个发送这些请求的PHP页面。

一旦我连接到服务器,我用“socket_write”命令写入内容,然后尝试使用“socket_read”读取服务器答案。 (而不是等待答案,我想知道如何正确地同步两个程序,例如信号量)。

代码如下:

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

$con = socket_connect($socket, "127.0.0.1",6543);

//Connected, we can ask


$message = "SLICE";
socket_write($socket,$message,strlen($message));

$buf = socket_read($socket,2048,PHP_NORMAL_READ);

echo $buf;

socket_close($socket);

java服务器使用套接字的InputStream侦听请求。 当我注释两行$ buf = socket_read和echo $ buf时,服务器能够获得“SLICE”消息。 但是,如果我这样离开它,似乎PHP写入套接字,然后通过尝试读取它直接独占套接字,在我的Java服务器能够读取套接字之前!

然后我的Java服务器在“readline();”上无限制地被阻塞了。 而在socket_read上也阻塞了PHP。

如何同步所有这些?


根据詹姆斯洛克哈特的评论,这是解决方案:

不知道Java代码在做什么,我只能猜测你需要换行或什么的? 尝试$ message =“SLICE”。 PHP_EOL;

链接地址: http://www.djcxy.com/p/78379.html

上一篇: PHP socket write and then read is blocking the socket

下一篇: Unable to read data from InputStream