0
我有一個正在偵聽請求的Java服務器和一個發送這些請求的PHP頁面。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代碼。但是從套接字讀取很容易,你應該能夠複製關於這個主題的任何教程。 – markspace
不知道Java代碼在做什麼,我只能冒險猜測你需要換行或什麼?嘗試$ message =「SLICE」。 PHP_EOL; –
是的,與PHP.EOL它完美的作品! 謝謝! – QuentinRM