🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Coroutine\\Socket->accept [TOC] 接受客户端发起的连接。调用此方法会立即挂起当前协程,并加入`EventLoop`监听可读事件,当`Socket`可读有到来的连接时自动唤醒该协程。并返回对应客户端连接的`Socket`对象。 该方法必须在使用`listen`方法后使用,适用于`Server`端。 ~~~ function Coroutine\Socket->accept(double $timeout = -1) : Coroutine\Socket | false; ~~~ ## 参数 * `$timeout`:设置超时,默认为`-1`表示永不超时。设置超时参数后,底层会设置定时器,在规定的时间没有客户端连接到来,`accept`方法将返回`false` ## 返回值 * 超时或`accept`系统调用报错时返回`false`,可使用`errCode`属性获取错误码,其中超时错误码为`ETIMEDOUT` * 成功返回客户端连接的`socket`,类型同样为`Swoole\Coroutine\Socket`对象。可对其执行`send`、`recv`、`close`等操作 ## 实例 ~~~ $socket = new Co\Socket(AF_INET, SOCK_STREAM, 0); $socket->bind('127.0.0.1', 9601); $socket->listen(128); go(function () use ($socket) { while(true) { echo "Accept: \n"; $client = $socket->accept(); if ($client === false) { var_dump($socket->errCode); } else { var_dump($client); } } }); ~~~