winsock UDP无法bind(实时错误'87'),真诚求帮助!

wangjie1986 2008-04-02 12:05:21


服务器端程序:
Private Sub Form_Load()
UDPserver.Bind 5000
End Sub
Private Sub Form_Terminate()
UDPserver.Close
End Sub
Private Sub UDPserver_DataArrival(ByVal bytesTotal As Long)
Dim message As String
UDPserver.GetData message
txtOutput.Text = message & vbCrLf
End Sub
Private Sub cmdSend_Click()
UDPclient.SendData txtSend.Text
'txtOutput.Text = textoutput.Text & "Sent message : " & txtSend.Text & vbCrLf
txtSend.Text = ""
End Sub
客户端程序:
Private Sub Form_Load()

UDPclient.RemotePort = 5000
UDPclient.RemoteHost ="localhost"
UDPclient.RemotePort = 5000
End Sub
Private Sub Form_Terminate()
UDPclient.Close
End Sub
Private Sub UDPclient_DataArrival(ByVal bytesTotal As Long)
Dim message As String
'UDPclient.GetData message
txtOutput.Text = message & vbCrLf
End Sub
这个程序不管是服务器端还是客户端运行起来都会有错误,都是bind错误,要么就是senddata错误,请问是哪有问题,郁闷了好长时间,看了好多帖子都不明白!还望各位不吝赐教!,在此多谢各位了!!!
...全文
404 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangjie1986 2008-04-03
对了,有时会出现这样的情况,就是我第一次点启动它提示错误,然后进入中断模式,提示我是结束还是调试的时候我点调试,而后我在点启动就可以运行了,只要不关闭工程它就可以运行,但是当我将它编译我.exe时就运行不了,或者当我保存这个工程,关闭它,然后在次打开工程它就又无法运行了, 并且不管怎么改端口它都无法运行!
回复
wangjie1986 2008-04-03
我把所有的杀毒软件和防火墙都关了,可它就是提示bind错误!!!也许我的机子,运行不了!!不过还是谢谢各位了,我 会给分的
回复
zzyong00 2008-04-02
把你的防火墙关了试试
回复
forbearORfolie 2008-04-02
我编译运行 1,2,通讯正常。

1,你确定你编译的两个程序都remoteport到对方bind的端口上了。
2,在同一台机器上,一个port不能同时被两个程序bind(包括vb的调试工程)
回复
wangjie1986 2008-04-02
疯了,我可是照着你的代码写的,可是点启动后就显示实时错误('87')bind错误,不管怎么改端口号都不行!!!
回复
luxingchang_2008 2008-04-02
学习一下
回复
forbearORfolie 2008-04-02
THE cptName 换成你计算机的名字
回复
forbearORfolie 2008-04-02
在command1_click中加一句
text1.text=text1.text & text2.text & vbcrlf
回复
forbearORfolie 2008-04-02
一个winsock1,两个textbox,text1(接收信息),text2(发送信息)
form_load:
with winsock1 '程序1,-----把remoteport和bind的端口调换一下,编译成 程序2 即可
.remotePort=1333
.remotehost=THE cptName
.bind 1999
end with
command1:
winsock1.senddata text2.text
text2.text=""


winsock1_dataArrival:
dim mystr
winsock1.getdata mystr
text1.text=text1.text & mystr & vbcrlf
回复
forbearORfolie 2008-04-02
我那代码就可以调试通过
回复
wangjie1986 2008-04-02
发疯了,怎么都不行,老是提示bind那个地方有什么实时错误('87'),怎么改端口都不行,看了msdn的一个例子照着做了,可是只能运行一遍,并且只要生成工程就打不开又提示什么实时错误!!!!!,我想不是端口问题吧,我都改了好多了,各位能给一个实际的简短的,两个工程的例子可以实际生成运行的(在一台机上)不胜感激!!!!!!
回复
forbearORfolie 2008-04-02
当然,udp程序的远程连接端口和本地端口是可以设置为同一个端口的
但是在同一台机子上是不允许的。
回复
forbearORfolie 2008-04-02
UDP是不分服务和客户端的,其他地方代码全部相同
form_load中修改

with winsock1 '程序1
.remotePort=1333
.remotehost=THE cptName
.bind 1999
end with

with winsock1 '程序2
.remotePort=1999 ’这个地方要调换一下
.remotehost=THE cptName
.bind 1333 ’2个程序都要连接到对方bind的端口上
end with
回复
[Quote=引用楼主 wangjie1986 的帖子:]
看了好多帖子都不明白
[/Quote]

翻了下MSDN,搜索"使用 Winsock 控件",里面有详细的解说及代码.

MSDN里面还是讲得非常清楚的.

别告诉我你没装.
回复
[Quote=引用楼主 wangjie1986 的帖子:]都是bind错误[/Quote]

这个一般是BIND的端口被占用.

看看换个端口吧.

另外你这代码貌似搞反了.

"客户端"看起来是接收消息的,那才应该BIND一个端口.

然后你这"服务器端"应该把远程端口设置为客户端BIND的端口,IP设为客户端所在IP.

想双向通信,两边都要有发送的代码,并且不需要两个WINSOCK.

服务器端程序:
Private Sub Form_Load()
UDPclient.RemotePort = 5000
UDPclient.RemoteHost ="localhost"
End Sub

客户端程序:
Private Sub Form_Load()
UDPclient.Bind 5000
End Sub
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7491

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-04-02 12:05
社区公告
暂无公告