找回密码
 加入
搜索
查看: 6494|回复: 9

[网络通信] [已解决]如何实现UDP广播?

  [复制链接]
发表于 2011-12-10 19:59:24 | 显示全部楼层 |阅读模式
本帖最后由 hlzxcjx 于 2011-12-24 20:08 编辑

论坛里有局域网内客户端自动连接服务端的例子,但好像效率不高。如果IP地址改变或某两台机子正在信时会影响IP地址搜寻。如果要定时搜寻,一个IP一个IP地去PING,显然费时。而UDP广播好像可以解决此问题。UDP广播,不是一个IP一个IP地去播吧?
   引用:UDP广播就是建立于UDP协议上的数据传输,当网络中的某一台机向交换机或路由发送一个广播数据时,交换机或路由则会帮我们将此广播数据发送到其节点下的所有接收者.交换机或路由在此时就有点类似于"大喇叭".只要我们向"大喇叭"喊一句话(发送一个消息),它就会向所有"听众"传送过去(嗯,聊天室就是如此).
   AU3如何实现UDP广播?
发表于 2011-12-10 21:48:29 | 显示全部楼层
UDP不是一个一个是对你所在统一网络的所有IP进行广播,这个操作不要重复,否则会导致网络瘫痪
 楼主| 发表于 2011-12-10 22:11:00 | 显示全部楼层
回复 2# sgj584520


    具体如何操作?
发表于 2011-12-10 22:44:38 | 显示全部楼层
大致象这个样子就可以了:
客户端的代码:
client.au3

UDPStartup()
$socket = UDPOpen("192.168.1.255", 65532)
If @error Then Exit

$n=0
While true
    Sleep(2000)
    $n += 1
    $status = UDPSend($socket, "Message #" & $n)
    If $status = 0 then 
        MsgBox(0, "ERROR", "Error while sending UDP message: " & @error)
        Exit
    EndIf
WEnd

Func OnAutoItExit()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc


服务端的代码:
(这里不是一般意义的服务端,只是接受消息而已)
Server.au3

UDPStartup()
$socket = UDPBind(@IPAddress1, 65532)
If @error Then Exit

While true
    $data = UDPRecv($socket, 50)
    If $data <> "" Then
        MsgBox(0, "UDP DATA", $data, 1)
    EndIf
    sleep(100)
WEnd

Func OnAutoItExit()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc


我没有局域网测试环境,只是在单机上是成功的,应该没有问题

评分

参与人数 1金钱 +10 收起 理由
msold5 + 10 赞一个!

查看全部评分

 楼主| 发表于 2011-12-10 23:01:17 | 显示全部楼层
回复 4# happytc


    谢谢!关键是这句吧:
   $socket = UDPOpen("192.168.1.255", 65532)
    “255”这个地址是不是?
  反过来,用服务器作UDP广播应该也可以吧?
  还有一个问题,象2楼所说的,“这个操作不要重复,否则会导致网络瘫痪”,是不是说只能广播一次?
发表于 2011-12-10 23:06:10 | 显示全部楼层
回复 5# hlzxcjx
没有什么‘反过来’,这里的所谓客户端和服务端,只是一个负责发送,一个负责接受而已
看来我取这个名误导你了。也就是每个机子上都要运行这两个程序。

“这个操作不要重复,否则会导致网络瘫痪”,是不是说只能广播一次?

谁说的?现在的交换机都有防广播阻塞的能力,不用你担心
发表于 2011-12-11 11:24:58 | 显示全部楼层
回复 6# happytc

每台电脑都要运行?一部分电脑只需接收消息的是不需要发送的那个运行吧?
 楼主| 发表于 2011-12-12 00:26:14 | 显示全部楼层
测试中,等到没有问题后再结贴。
 楼主| 发表于 2011-12-24 20:07:48 | 显示全部楼层
好像没问题!
发表于 2012-12-23 18:48:30 | 显示全部楼层
很简单,学到了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 21:00 , Processed in 0.075542 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表