多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Coroutine\Socket->recvfrom 接收数据,并设置来源主机的地址和端口。用于`SOCK_DGRAM`类型的`socket`。 ```php function Coroutine\Socket->recvfrom(array &$peer, double $timeout = -1) : string | false; ``` 此方法会引起协程调度,底层会立即挂起当前协程,并监听可读事件。可读事件触发,收到数据后执行`recvfrom`系统调用获取数据包。 参数 ---- * `$peer`:对端地址和端口,引用类型。函数成功返回时会设置为数组,包括`address`和`port`两个元素 * `$timeout`:超时设置,在规定的时间内未返回数据,`recvfrom`方法会返回`false` 返回值 --- * 成功接收数据,返回数据内容,并设置`$peer`为数组 * 失败返回`false`,并设置`errCode`属性,不修改`$peer`的内容 实例 ---- ```php go(function () { $socket = new Co\Socket(AF_INET, SOCK_DGRAM, 0); $socket->bind('127.0.0.1', 9601); while (true) { $peer = null; $data = $socket->recvfrom($peer); echo "[Server] recvfrom[{$peer['address']}:{$peer['port']}] : $data\n"; $socket->sendto($peer['address'], $peer['port'], "Swoole: $data"); } }); ```