如何使用socket_recvfrom读取套接字数据


How to read socket data with socket_recvfrom?

我需要从UDP套接字获取信息,但事实是我不知道会收到多少答案,所以我决定等待几秒钟。主要问题是socket_recvfrom块和所有代码卡住了…是否有办法等待几秒钟并停止插座?

我代码:

$end_time = time() + 2;
while ($end_time > time()) {
    socket_recvfrom($socket, $buffer, 2500, 0, $from, $port);
    var_dump($buffer);
}

您可以使用MSG_DONTWAIT标志将函数设置为非阻塞模式:

$end_time = time() + 2;
while ($end_time > time()) {
    socket_recvfrom($socket, $buffer, 2500, 0, $from, $port, MSG_DONTWAIT);
    var_dump($buffer);
    // sleep 500ms to decrease cpu usage
    usleep(500000);
}