在php中非常简单的套接字代码 - 放置数据是好的,但什么都不返回

时间:2013-03-29 09:08:09

标签: php sockets

我需要将一些数据发布到监听服务器并使用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种不同的方式打开套接字,它们似乎都有类似的问题。我怎样才能测试出了什么问题?

1 个答案:

答案 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;