PHP:发送UDP广播消息,并等待响应
发布时间:2020-12-13 13:13:22 所属栏目:PHP教程 来源:网络整理
导读:我用这个代码发送一个UDP广播消息 $ip = "255.255.255.255";$port = 8888;$str = "DEVICE_DISCOVERY";$sock = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP); socket_set_option($sock,SOL_SOCKET,SO_BROADCAST,1); socket_sendto($sock,$str,strlen($str),$ip
我用这个代码发送一个UDP广播消息
$ip = "255.255.255.255"; $port = 8888; $str = "DEVICE_DISCOVERY"; $sock = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP); socket_set_option($sock,SOL_SOCKET,SO_BROADCAST,1); socket_sendto($sock,$str,strlen($str),$ip,$port); socket_recvfrom($sock,$buf,20,$port); echo "Messagge : < $buf >,$ip : $port <br>"; socket_close($sock); 我想要一些特定的网络设备(在我的例子中是一些具有以太网屏蔽的Arduino板卡)响应一个特定的消息. 代码的工作原理,但是这样我就无法打印所有的响应,只能打印一个.
你需要一个while循环,如果在超时时间内没有响应,你将打破它.
首先设置超时,例如5秒: socket_set_option($sock,SO_RCVTIMEO,array("sec"=>5,"usec"=>0)); 循环: while(true) { $ret = @socket_recvfrom($sock,$port); if($ret === false) break; echo "Messagge : < $buf >,$ip : $port <br>"; } 全部代码: $ip = "255.255.255.255"; $port = 8888; $str = "DEVICE_DISCOVERY"; $sock = socket_create(AF_INET,1); socket_set_option($sock,"usec"=>0)); socket_sendto($sock,$port); while(true) { $ret = @socket_recvfrom($sock,$ip : $port <br>"; } socket_close($sock); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |