Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/UDP:可以通过UDP进行写入,但无法接收数据_Php_Sockets_Udp - Fatal编程技术网

PHP/UDP:可以通过UDP进行写入,但无法接收数据

PHP/UDP:可以通过UDP进行写入,但无法接收数据,php,sockets,udp,Php,Sockets,Udp,我在本地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 $

我在本地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应用程序明显关闭的结果相同)

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


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

$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;