【问题标题】:how to accept multiple connection to the device如何接受与设备的多个连接
【发布时间】:2014-09-14 03:00:49
【问题描述】:

我正在创建一个套接字脚本,它将监听我们的 3 个设备。并且该设备仅设置在一个服务器 ip 和一个端口中。

 $file = fopen('txt.log','a+');
    $server = stream_socket_server('tcp://'.$ipserver.':'.$port, $errno, $errorMessage);

    if(!$server) {
        echo "$errorMessage ($errno)<br />\n";
    }
    else{

        while($client = @stream_socket_accept($server,$timeout)) {
               stream_copy_to_stream($client, $file);
               fclose($file);
               fclose($client);


        }

    }

但问题是,如果连接了一个设备,这两个设备将无法再连接。我很感激有人可以帮助我如何完成这项工作。或者给我一些想法

提前谢谢你。

【问题讨论】:

标签: php sockets stream


【解决方案1】:
$file = fopen('txt.log', 'a+');
$server = stream_socket_server("tcp://$ipserver:$port", $errno, $errorMessage);
if (!$server)
    echo "$errorMessage ($errno)<br />\n";
else
{
    $s = array($server);
    $t = $timeout == -1 ? NULL : $timeout;
    while ($r = $s and stream_select($r, $n=NULL, $n=NULL, $t))
        foreach ($r as $stream)
            if ($stream == $server) // new client
                $s[] = stream_socket_accept($server, -1);
            else
                if (!fputs($file, fgets($stream)))
                {
                    fclose($stream);
                    array_splice($s, array_search($stream, $s), 1);
                }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2017-10-13
    • 2018-11-25
    • 1970-01-01
    • 2020-10-10
    • 2015-05-12
    • 2022-07-22
    相关资源
    最近更新 更多