Coroutine\Socket->recvAll
最后更新于:2022-04-02 06:28:25
# Coroutine\\Socket->recvAll
[TOC]
> 需要版本v4.3.0及以上
接收数据, 与recv不同的是, recvAll会尽可能完整地接收响应长度的数据, 直到接收完成或遇到错误失败。
~~~
function Coroutine\Socket->recvAll(int length = 65535, double $timeout = -1) : string | false;
~~~
## 参数
* `$length`:需要接收的长度
* `$timeout`:设置超时时间,默认为`-1`表示永不超时
`recvAll`方法会立即挂起当前协程并监听可读事件,等待对端发送数据后,可读事件触发时,执行`recv`系统调用获取`socket`缓存区中的数据, 重复该行为直到接收到指定长度的数据或遇到错误终止,并唤醒该协程。
## 返回值
* 接收成功返回实际数据, 并且返回的字符串长度和参数长度一致
* 接收失败返回`false`,并设置`errCode`属性
* 接收超时,错误码为`ETIMEDOUT`
';