2011-04-27 59 views
1

我有JAVA中的服務器和客戶端應用程序,與此服務器有什麼關係。首先看,這是沒有問題的 - JAVA使用socket.getInputStream()來接收數據,使用socket.getOutputStream()來發送數據。套接字PHP掛在fgets上

我需要在PHP上編寫相同的客戶端。手冊中的所有示例都不能幫助我。我可以成功連接到服務器,但是當我試圖讀取某些內容時 - 頁面掛起。例如:

$fp = stream_socket_client($addr, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    fwrite($fp, $data); 
    while (!feof($fp)) { 
     var_dump(fgets($fp, 1024)); 
    } 
    fclose($fp); 
} 

該代碼即使沒有時也會掛起。

什麼可能是錯的?

回答

0

你的服務器真的發送字節嗎?

fgets($fp, 1024) 

回報,如果這些條件之一發生:

- EOF或換行符接收

- 1024-1字節讀

遠側閉合連接

如果這些情況沒有發生,通話會阻止。

如何將1024更改爲較低的數字或使用fgetc()?