0

我已经为此奋斗了:我正在尝试编写一个 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 中的数据。我不控制远程主机,我只能看到它已经接收到数据并生成了响应。你能建议一下,我到底哪里错了?

4

1 回答 1

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);
于 2012-04-23T05:57:12.563 回答