Coroutine\Client
最后更新于:2022-04-02 06:26:55
# 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, //协议最大长度
));
~~~
';