簡體   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