繁体   English   中英

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

[英]PHP socket write and then read is blocking the socket

我有一个正在侦听请求的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并回显$ buf时,服务器能够获得“ SLICE”消息。 但是,如果我这样离开,看来PHP会写入套接字,然后在Java服务器能够读取套接字之前,通过尝试读取套接字直接垄断套接字!

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

如何同步所有这些?

根据James Lockhart的评论,这是解决方案:

不知道Java代码在做什么,我只能冒险猜测您需要换行或其他东西吗? 尝试$ message =“ SLICE”。 PHP_EOL;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM