首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在使用socket_accept接入多个客户端时,socket_read解锁

在使用socket_accept接入多个客户端时,socket_read解锁
EN

Stack Overflow用户
提问于 2015-01-14 20:54:54
回答 1查看 639关注 0票数 2

我有服务器套接字,客户端可以连接到我,读写套接字,就像这样

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $address, $port))
socket_listen($socket);
socket_set_nonblock($socket);

我在socket_accept中将socket_set_nonblock设置为非阻塞我的套接字,这很好用,但是对于连接到我的服务器的客户端,我不能非阻塞客户端

while(true){
    if (($newc = @socket_accept($socket)) !== false) {
        //socket_set_nonblock($newc);
        //socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));
        $clients[] = $newc;
        $data = socket_read($newc, 1024, PHP_NORMAL_READ);
    }
    echo "do sometings ...";
}

我测试了socket_set_nonblock( $newc )和option SO_RCVTIMEO以防止阻塞socket_read中的$newc,但我不能成功地解除阻塞

我测试了socket_select,如下所示,但这不起作用

 $write = array();
 $expect = NULL;
 socket_select($clients, $write, $except, 0);

当第二个客户端连接到程序echo“做一些事情...”不工作,直到第二个客户端输入任何非阻塞socket_read我必须做什么?这是不可能的,还是我使用的socket_select不正确?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27943458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档