多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Coroutine\Socket->connect 连接到目标服务器。调用此方法会发起异步的`connect`系统调用,并挂起当前协程,底层会监听可写,当连接完成或失败后,恢复该协程。 该方法适用于`Client`端,支持`IPv4`、`IPv6`、`UnixSocket`。 ```php function Coroutine\Socket->connect(string $host, int port = 0, double $timeout = -1) : bool; ``` 参数 ---- * `$host`:目标服务器的地址,如`127.0.0.1`、`192.168.1.100`、`/tmp/php-fpm.sock`、`www.baidu.com`等,可以传入`IP`地址、`Unix Socket`路径或域名。若为域名,底层会自动进行异步的`DNS`解析,不会引起阻塞 * `$port`:目标服务器端口,`Socket`的`domain`为`AF_INET`、`AF_INET6`时必须设置端口 * `$timeout`:超时时间,底层会设置定时器,在规定的时间内未能建立连接,`connect`将返回`false` 返回值 ---- * 超时或`connect`系统调用报错时返回`false`,可使用`errCode`属性获取错误码,其中超时错误码为`ETIMEDOUT` * 成功返回`true` 实例 ---- ```php $socket = new Co\Socket(AF_INET, SOCK_STREAM, 0); go(function () use ($socket) { $retval = $socket->connect('localhost', 9601); while ($retval) { $n = $socket->send("hello"); var_dump($n); $data = $socket->recv(); var_dump($data); if (empty($data)) { $socket->close(); break; } co::sleep(1.0); } var_dump($retval, $socket->errCode); }); ```