我需要将一些数据发布到监听服务器并使用php中的套接字来获取answear。
把工作做好(接收器得到他需要的东西),但是当我试图得到任何服装时,我只是不能。它只是一遍又一遍......看起来像while
永远不会结束,但为什么呢? (在队列方面检查并说出答复是我提交的)。
我使用Php但是serwer是c ++(我听说这可能是问题)
代码:
ini_set('max_execution_time', 36000); // to test the shile for a longer time, but aparentry responce goes right away
$fp = fsockopen("192.168.x.x", 9999, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
echo "Connected<br />\n";
$out = chr(11)."MSH|....some fields there....|".chr(28).chr(13); //chr(x) are ruquired by serwer
if ( fputs($fp, $out, strlen($out)) )
{
echo "<br />\nwriting message<br />\n";//if I eomment the while below this will show without problem
while (!feof($fp)) {
echo fgets($fp, 1024);
}//just goes and goes... never finding end of file (I gues)
}
fclose($fp);
}
我在php中使用3种不同的方式打开套接字,它们似乎都有类似的问题。我怎样才能测试出了什么问题?
答案 0 :(得分:1)
我会尝试使用fwrite而不是fput,但是你的代码看起来很好,你应该描述你使用它,服务器等等,以获得一些文档。
选择TCP / UDP。
$fp = fsockopen('udp://192.168.X.X', '9999', $errno, $errstr, 10);
fwrite($fp, '\\xff\\xff\\xff\\xff\\');
试试这个。
do {
$contents .= fgetc($fp);
$socketstatus = socket_get_status($fp);
} while($socketstatus["unread_bytes"]);
echo $contents;