Coroutine\Socket->recvfrom

接收数据,并设置来源主机的地址和端口。用于SOCK_DGRAM类型的socket

function Coroutine\Socket->recvfrom(array &$peer, double $timeout = -1) : string | false;

此方法会引起协程调度,底层会立即挂起当前协程,并监听可读事件。可读事件触发,收到数据后执行recvfrom系统调用获取数据包。

参数

返回值

实例

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");
    }
});