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