0
我有用Java編寫的服務器。它是一個簡單的,當客戶端連接時迴應「HELLO」,然後迴應客戶端發送的任何回覆。代碼如下:無法從使用PHP客戶端的Java套接字服務器讀取響應
ServerSocket ss=new ServerSocket(2001);
while(true) {
Socket s=ss.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
out.println("HELLO");
String msg=in.readLine();
out.println(msg);
}
我有一個連接到服務器的PHP腳本:
<?php
$socket=socket_create(AF_INET,SOCK_STREAM,getprotobyname('tcp'));
socket_connect($socket,'127.0.0.1',2001);
$msg=socket_read($socket,10);
echo socket_write($socket,'I am the client.');
$msg=socket_read($socket,20);
echo $msg;
?>
我從服務器獲取的「HELLO」消息,該服務器也讓「我是客戶端「消息,但PHP客戶端沒有收到回覆。我在這裏做錯了什麼?
好的。所以我需要在回覆後添加一個換行符! –
請注意op的聲明,即服務器從php獲取消息(暗示readline()已返回)。雖然,我仍然認爲你是對的。 – goat
@chris:啊,我錯過了。我沒有看到OP *將如何從客戶端獲取消息,除非socket_write真的隱式添加了新行......或者PHP腳本放棄並關閉了套接字。 –