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

时间:2015-06-12 15:58:35

标签: java php sockets

我有一个正在侦听请求的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();"虽然PHP也在socket_read上被阻止。

如何同步所有这些?

1 个答案:

答案 0 :(得分:0)

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

  

在不知道Java代码在做什么的情况下,我只能冒险   猜猜你需要一个换线器什么?试试$ message =" SLICE" 。   PHP_EOL;

相关问题