如何使用winsock对局域网内进行广播?
帮帮忙!分数不多,事后再补
问题点数:60、回复次数:30Top
1 楼jimgreen(可可怜)回复于 2001-08-27 15:40:20 得分 0
tell me tooTop
2 楼jimgreen(可可怜)回复于 2001-08-27 15:44:58 得分 0
everestone@263.netTop
3 楼QQRN(笨QQ-馊主意提供者)回复于 2001-08-27 16:03:51 得分 0
tell me too
QQRN@SINA.COMTop
4 楼superzxf(superzxf)回复于 2001-08-28 17:27:43 得分 0
没人会吗?Top
5 楼snakeegg(蛇蛋)回复于 2001-08-28 17:31:03 得分 0
把winsock控件的remotehost属性设成***.255.255.255就可以了
其中***是所你在子网的ip的第一个字段
Top
6 楼superzxf(superzxf)回复于 2001-08-28 19:06:42 得分 0
我试过了,系统提示本地机上的地址不可用
Top
7 楼snakeegg(蛇蛋)回复于 2001-08-28 19:11:55 得分 0
不可能的,是不是端口或者其它设的有问题,把代码贴来我看Top
8 楼hydnoahark(诺亚方舟)回复于 2001-08-28 19:13:10 得分 0
主机部分全1的地址为你的广播地址
Top
9 楼snakeegg(蛇蛋)回复于 2001-08-28 19:22:15 得分 0
不用全1也行,我那时就从最后一个段开始试,一个255和两个255都不行,到三个255时就好使了
在完成同样功能的情况下,还是缩短广播范围的好Top
10 楼pp616(坏蛋)回复于 2001-08-28 20:02:45 得分 5
在一个循环中循环ip地址就可以了。用udp协议很快的。我有示例代码你要的话可以和我联系。
我的email:chinazmz@china.comTop
11 楼superzxf(superzxf)回复于 2001-08-28 20:15:33 得分 0
'server
private sub form_load()
winsock1.protocol=sckudpprotocol
winsock1.remotehost="192.255.255.255"
winsock1.remoteport=8888
winsock1.bind
end sub
Private Sub Command3_Click()
Winsock1.SendData "HELLO"
End Sub
'client
private sub form_load()
winsock1.protocol=sckudpprotocol
winsock1.localport=8888
winsock1.bind
end sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s as string
Winsock1.GetData s
MsgBox s
End Sub
客户端没有收到任何数据
Top
12 楼hydnoahark(诺亚方舟)回复于 2001-08-28 20:46:39 得分 5
>>winsock1.remotehost="192.255.255.255"
你确定你的网络的广播地址是192.255.255.255???
你本机的IP地址是什么?
Top
13 楼superzxf(superzxf)回复于 2001-08-28 20:53:07 得分 0
本机ip为192.168.168.1
子网掩码255.255.255.0
Top
14 楼snakeegg(蛇蛋)回复于 2001-08-28 21:25:24 得分 0
你的代码好用啊,在我机器通过了
你的ip设的是局域网的吧,可不是你上internet的ip啊
Top
15 楼snakeegg(蛇蛋)回复于 2001-08-28 21:28:47 得分 0
192.168.168.1是你在2000下做共享时的ip,不是你在LAN上的真正ip,错误在这里!!!!!Top
16 楼superzxf(superzxf)回复于 2001-08-28 21:31:56 得分 0
本机只有一个ip地址,没有和internet连接
Top
17 楼snakeegg(蛇蛋)回复于 2001-08-28 21:33:34 得分 0
那个192.168.168.1不是你机器真正的ip.是假的Top
18 楼blow_jj(阿俊)回复于 2001-08-28 21:37:02 得分 0
这个问题我也不太懂,我来学习一下:)请大家多多指教!Top
19 楼superzxf(superzxf)回复于 2001-08-28 21:37:34 得分 0
我用ipconfig看到的也是该地址呀
而且在server端的remotehost设成客户端的地址也可以发送成功
Top
20 楼snakeegg(蛇蛋)回复于 2001-08-28 21:40:39 得分 0
你去网上邻居里找找,那里的ip才是真的Top
21 楼superzxf(superzxf)回复于 2001-08-28 21:43:57 得分 0
都查过了,没错Top
22 楼superzxf(superzxf)回复于 2001-08-28 21:48:29 得分 0
终于成功了,但不知道为什么
remotehost设为
192.168.168.255 成功
192.168.255.255 不成功
192.255.255.255 不成功
255.255.255.255 成功
Top
23 楼blow_jj(阿俊)回复于 2001-08-28 21:49:38 得分 0
upTop
24 楼snakeegg(蛇蛋)回复于 2001-08-28 21:50:55 得分 0
这样和你说吧,192.168.168.1是2000下的一个特殊ip,当你设成它之后,其它机器就可以共享你的资源一起上网.
我这没有2000,具体情况记不清了,那你再运行一下ipconfig,看仔细了,里面是不是有两个ip呢
要是有的话,另一个就是真的.
问题肯定出在这里,要么你在看一下你网关的地址是多少,换成那个试试Top
25 楼superzxf(superzxf)回复于 2001-08-28 21:59:40 得分 0
把发送程序修改如下
Private Sub Command3_Click()
ON ERROR goto er
Winsock1.SendData "HELLO"
exit sub
er:
msgbox "error:" & err.Description
resume next
End Sub
第一次发送总会捕获到一个错误,错误信息为空,而且可以成功发送
Top
26 楼superzxf(superzxf)回复于 2001-08-28 22:02:18 得分 0
win98se和win2k下的internet连接共享的特殊ip好像应该是192.168.0.1
我把ip改为192.168.168.253问题依旧
我没有设任何的网关,dns,wins
Top
27 楼snakeegg(蛇蛋)回复于 2001-08-28 22:08:36 得分 20
对,那个好象是192.168.0.1,我可能记错了,不好意思啊 ^_^
不过我还是觉得你那边的ip有些怪怪的,呵呵
你捕捉到的那个错误可能是这样的,因为你对整个网络发广播,你的本地机也是其中一个,但它的端口已经被占用(既做发送端口又做接收端口了),所以出了个错Top
28 楼gdjacky(华英雄)回复于 2001-08-28 22:24:17 得分 20
因为你的网络掩码是255.255.255.0,所以决定你的IP地址里头的网络地址为192.168.168,主机地址为最后一个数。因此当你用192.168.255.255或192.255.255.255都不会成功的,因为这两个IP地址的网络部分分别为192.168.255和192.255.255,不是在你的网络中(192.168.168);而255.255.255.255是一个本地广播地址,用于向本地网络中的所有主机发送广播消息,其效果与用192.168.168.255一样。
Top
29 楼superzxf(superzxf)回复于 2001-08-28 22:24:59 得分 0
我是想截获其他程序发出的广播分组
我单位电脑上安装有一套软件,该软件采用服务器端的加密方式(在服务器端以服务方式运行一个程序),客户端和该程序建立连接,得到软件的授权信息。
我启动服务器上的程序后,用netstat -a发现该程序监听两个端口(一个tcp,一个udp),我估计该程序使用udp协议接收客户机寻找服务器的广播,然后发送该程序所在机器的地址,客户端接收该数据后便和服务器端建立一个tcp连接进行以后的操作。
我想用我的程序替换该服务器程序,接收客户机的广播分组,但没收到任何东西:-(
Top
30 楼snakeegg(蛇蛋)回复于 2001-08-28 22:42:34 得分 10
关于广播,你该知道的也都知道了
剩下的也实在帮不了你什么了
估计还是你那ip地址的事
再仔细思考思考,是不是哪个细节搞错了,祝你成功!!!!
Top





