TCP连接只发送一种不接收的数据

时间:2012-04-23 05:51:23

标签: php tcp tcpsocket ttcpserver

我已经对此进行了充分的斗争:我正在尝试编写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的数据。我不控制远程主机,我只能看到它已收到数据并生成响应。你能说一下,我哪里错了?

1 个答案:

答案 0 :(得分: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);