2012-04-23 12 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))== falseを!) – user1051505