Java PHP套接字先写后读阻塞了套接字

Java PHP套接字先写后读阻塞了套接字,java,php,sockets,Java,Php,Sockets,我有一个监听请求的Java服务器和一个发送这些请求的PHP页面 一旦我连接到服务器,我就用“socket\u write”命令写一些东西,然后我试着用“socket\u read”读取服务器的答案。 (我不想等待答案,而是想知道如何正确地同步这两个程序,例如使用信号量) 代码如下: $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); $con = socket_connect($socket, "127.0.0.1",6543); //

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

一旦我连接到服务器,我就用“socket\u write”命令写一些东西,然后我试着用“socket\u 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\u read和echo$buf时,服务器能够获得“SLICE”消息。 但是如果我像这样离开它,似乎PHP写入套接字,然后在我的java服务器能够读取套接字之前,通过尝试读取它来直接垄断套接字

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


如何同步所有这些

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


不知道Java代码在做什么,我只能冒险 猜猜你需要什么断线什么的?试试$message=“SLICE”。 PHP_EOL


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


不知道Java代码在做什么,我只能冒险 猜猜你需要什么断线什么的?试试$message=“SLICE”。 PHP_EOL


需要Java代码。但是从套接字阅读是很容易的,你应该能够复制关于这个主题的任何教程?试试$message=“SLICE”。PHP_EOL;是的,使用PHP.EOL,它可以完美地工作!非常感谢。需要Java代码。但是从套接字阅读是很容易的,你应该能够复制关于这个主题的任何教程?试试$message=“SLICE”。PHP_EOL;是的,使用PHP.EOL,它可以完美地工作!非常感谢。需要Java代码。但是从套接字阅读是很容易的,你应该能够复制关于这个主题的任何教程?试试$message=“SLICE”。PHP_EOL;是的,使用PHP.EOL,它可以完美地工作!非常感谢。