PHP/UDP: 可以通过 UDP 写入,但似乎无法接收数据
PHP/UDP: Can write via UDP, but recieving data seams not possible
我有这个代码 运行ning on php 在我的本地 mac:
$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服务器的答案。但是,脚本本身永远是 运行ning(我假设它正在等待由于某种原因永远不会通过套接字输入的输入)。
我还尝试 运行 群晖 NAS 本地网络服务器上的脚本。相同的结果。
(UDP App明显关闭后结果相同)
使用此代码解决了问题。显然,发送后必须关闭套接字,然后打开一个新套接字进行接收。它似乎是此设备(服务器)的独特行为:
$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;
我有这个代码 运行ning on php 在我的本地 mac:
$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服务器的答案。但是,脚本本身永远是 运行ning(我假设它正在等待由于某种原因永远不会通过套接字输入的输入)。 我还尝试 运行 群晖 NAS 本地网络服务器上的脚本。相同的结果。
(UDP App明显关闭后结果相同)
使用此代码解决了问题。显然,发送后必须关闭套接字,然后打开一个新套接字进行接收。它似乎是此设备(服务器)的独特行为:
$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;