🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Coroutine\\Client [TOC] `Coroutine\Client`提供了`TCP`、`UDP`、`UnixSocket`传输协议的`Socket`客户端封装代码,使用时仅需`new Swoole\Coroutine\Client`即可。 * `Coroutine\Client`底层实现协程调度,业务层无需感知 * 使用方法和`Client`同步模式方法完全一致 * `connect`超时设置同时作用于`Connect`和`Recv`、`Send`超时 * 除了正常的调用外,`Coroutine\Client`还支持并行请求 ## 继承关系 `Coroutine\Client`与`Client`并不是继承关系,但绝大部分`Client`提供的方法均可在`Coroutine\Client`中使用。请参考[Client](Client.md)。 在`Coroutine\Client`中可以使用`set`方法设置配置选项,使用方法和与`Client->set`完全一致,请参考[Client](Client-配置选项.md "配置选项"),对于使用有区别的函数,此处单独说明 ## 使用实例 ~~~ use Swoole; $client = new Coroutine\Client(SWOOLE_SOCK_TCP); if (!$client->connect('127.0.0.1', 9501, 0.5)) { exit("connect failed. Error: {$client->errCode}\n"); } $client->send("hello world\n"); echo $client->recv(); $client->close(); ~~~ ## 协议处理 协程客户端也支持长度和`EOF`协议处理,设置方法与[Client](Client-配置选项.md "配置选项")完全一致。 ~~~ use Swoole; $client = new Coroutine\Client(SWOOLE_SOCK_TCP); $client->set(array( 'open_length_check' => 1, 'package_length_type' => 'N', 'package_length_offset' => 0, //第N个字节是包长度的值 'package_body_offset' => 4, //第几个字节开始计算长度 'package_max_length' => 2000000, //协议最大长度 )); ~~~