2012-04-23 45 views
0

我與這還不夠打:我想寫一個TCP客戶端代碼和驗證碼有一個數據發送到服務器,並得到迴應。客戶端代碼如下:TCP連接發送的數據只有一條路沒有收到

<?php 
$str3 = "Test Data"; 
echo $str3; 
$fp = stream_socket_client("tcp://192.168.1.26:12000", $errno, $errstr, 30); 
if (!$fp) 
{ 
    echo "$errstr ($errno)<br />\n"; 
    echo "Some problem! </br>"; 
} 

else 
{ 
    fwrite($fp,$str3); 
    $str = ""; 

    while ($str == "") 
    { 
     $str = fgets($fp, 1024); 
    } 

    fclose($fp); 
    echo $str; 
} 
?> 

遠程主機也收到數據並回應。不幸的是,我沒有獲得$ str的數據。我不控制遠程主機,我只能看到它已收到數據並生成響應。你能建議,我到底在哪裏出錯?

回答

2

你可能希望嘗試一個更習慣的閱讀循環;我已經偷了這個代碼http://www.php.net/manual/en/function.fgets.php

while (($buffer = fgets($fp, 4096)) !== false) { 
    echo $buffer; 
} 
if (!feof($fp)) { 
    echo "Error: unexpected fgets() fail\n"; 
} 
fclose($fp); 
+0

嘿,這超時而在(($緩衝=與fgets($ fp的,4096))==假的!) – user1051505 2012-04-23 07:09:33

相關問題