服务器端程序:
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错误,请问是哪有问题,郁闷了好长时间,看了好多帖子都不明白!还望各位不吝赐教!,在此多谢各位了!!!
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错误,请问是哪有问题,郁闷了好长时间,看了好多帖子都不明白!还望各位不吝赐教!,在此多谢各位了!!!
这个一般是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
翻了下MSDN,搜索"使用 Winsock 控件",里面有详细的解说及代码.MSDN里面还是讲得非常清楚的.别告诉我你没装.
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
但是在同一台机子上是不允许的。
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
text1.text=text1.text & text2.text & vbcrlf
2,在同一台机器上,一个port不能同时被两个程序bind(包括vb的调试工程)