【问题标题】:PHP/UDP: Can write via UDP, but recieving data seams not possiblePHP/UDP:可以通过 UDP 写入,但似乎无法接收数据
【发布时间】:2021-02-19 16:58:16
【问题描述】:

我有这段代码在我的本地 mac 上的 php 上运行:

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$result = socket_connect($socket, $address, $port);
$msg = "i";
$len = strlen($msg);
socket_send($socket, $msg, $len, 0);
socket_recv($socket, $buf, 512, 0);
echo $buf;
socket_close($socket);

代码最多可用于“socket_recv”。实际上,当在计算机上运行 udp 测试应用程序时,我可以在应用程序的终端屏幕上看到来自 udp 服务器的答案。但是,脚本本身一直在运行(我假设它正在等待由于某种原因永远不会通过套接字的输入)。 我还尝试在 Synology NAS 上的本地 Web 服务器上运行脚本。结果一样。

(与 UDP App 明显关闭的结果相同)

【问题讨论】:

    标签: php sockets udp


    【解决方案1】:

    使用此代码解决了问题。显然,发送后必须关闭套接字并打开一个新的套接字进行接收。这似乎是该设备(服务器)的独特行为:

    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    $bytes = socket_sendto($socket, $message, strlen($message), 0, "192.168.0.37", 7090);
    socket_close($socket);
    
    $message="curr 7700";
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    socket_bind($socket, '0.0.0.0', 7090);
    $from = '';
    $port = 0;
    socket_recvfrom($socket, $buf, 512, 0, $from, $port);
    echo $buf . PHP_EOL;
    

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2013-11-08
      • 2011-05-13
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多