2013-04-02 47 views
0
$input = socket_read($clients[$i]['socket'],2048); 
$lent = strlen($input); 
echo "\n\n$lent\n"; 
echo "\nDATA: ".$input."\n"; 

我的實際數據讀取長度大於512。PHP socket_read最多隻能讀取512個字節

有人可以幫我嗎?

+1

你怎麼知道長度正好是2048字節?我自己並不使用這種方法,但我知道如果使用可變字節長度,首先必須讀取前4個(我相信)字節以獲得完整的數據包長度。 – Benz

+0

我的數據的長度並不是固定的,當我檢查我的記錄長度時,它已經是1361,因爲我使用了strlen函數,但是當我使用: socket_recv($ clients [$ i] ['socket'], $ buff,2048,MSG_WAITALL); 我可以接收所有我發送的數據,問題是我socket_write功能,這將有一次我socket_recv提示錯誤.. 感謝您的答覆.. @ j0k – epoy

+0

好了,你知道的字節長度,並使用socket_read ()函數讀取所有字節。但是真正的問題是什麼?它出錯了嗎?你沒有得到任何輸出或其他東西:)? – Benz

回答

0

請看一看這個線程:

Can't read from socket (hangs)

while($resp = socket_read($clients[$i]['socket'], 1000)) { 
    $str .= $resp; 
    if (strpos($str, "\n") !== false) break; 
} 
socket_close($sock); 
die("Server said: $str"); 

這組代碼循環,直到響應爲空。

相關問題