Home  >  Article  >  Backend Development  >  抱一点期望,有热心人能帮我看看socket的问题

抱一点期望,有热心人能帮我看看socket的问题

WBOY
WBOYOriginal
2016-06-23 14:05:10781browse

想实现这样的功能:
    向整个局域网发送广播,
    然后获取全部的返回信息。

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);$message="1000";@socket_sendto($socket,$message,strlen($message),0,"255.255.255.255",6000);$ip="";$port=6000;@socket_recvfrom($socket,$message,0,0,$ip,$port);


广播好像成功了,但是接收的代码好像有问题,上述代码会停不下来
其原因是有的ip没有返回结果,这个代码好像会一直等
我改为不等,但是所有返回结果都抓取不到了……

希望有热心人帮忙看看


回复讨论(解决方案)

是否成果应检查 socket_sendto 的返回值
参数 addr 好像不对吧? udp 方式应该是网段的最后一个地址
比如
192.168.5.0/24
那么网段为 192.168.5.0 掩码 255.255.255.0 广播地址为 192.168.5.255

socket_recvfrom 是侦听,好像你的 $ip 是空的嘛

版主很给力  听版主的肯定没错

谢谢版主的回复
    我需要全网段广播,如果有人回应,我希望获取这个回应
    $ip是空的,好像是可以这样传参的,因为不确定哪个ip会回应
    (比我我喊,谁有钱借我点?可能会有2个人答应,我这里有。我就想得到他们答应的内容)
    或许有其他的写法?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn