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