我用这个代码发送一个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);
你需要一个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);
原文地址:https://www.jb51.cc/php/131205.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。