Coroutine\Socket->recvAll

需要版本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