服务器端程序:
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错误,请问是哪有问题,郁闷了好长时间,看了好多帖子都不明白!还望各位不吝赐教!,在此多谢各位了!!!

解决方案 »

  1.   


    这个一般是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 
      

  2.   


    翻了下MSDN,搜索"使用 Winsock 控件",里面有详细的解说及代码.MSDN里面还是讲得非常清楚的.别告诉我你没装.
      

  3.   

    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
      

  4.   

    当然,udp程序的远程连接端口和本地端口是可以设置为同一个端口的
    但是在同一台机子上是不允许的。
      

  5.   

    发疯了,怎么都不行,老是提示bind那个地方有什么实时错误('87'),怎么改端口都不行,看了msdn的一个例子照着做了,可是只能运行一遍,并且只要生成工程就打不开又提示什么实时错误!!!!!,我想不是端口问题吧,我都改了好多了,各位能给一个实际的简短的,两个工程的例子可以实际生成运行的(在一台机上)不胜感激!!!!!!
      

  6.   

    一个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
      

  7.   

    在command1_click中加一句
    text1.text=text1.text & text2.text & vbcrlf
      

  8.   

    THE cptName 换成你计算机的名字
      

  9.   

    疯了,我可是照着你的代码写的,可是点启动后就显示实时错误('87')bind错误,不管怎么改端口号都不行!!!
      

  10.   

    我编译运行 1,2,通讯正常。1,你确定你编译的两个程序都remoteport到对方bind的端口上了。
    2,在同一台机器上,一个port不能同时被两个程序bind(包括vb的调试工程)
      

  11.   

    我把所有的杀毒软件和防火墙都关了,可它就是提示bind错误!!!也许我的机子,运行不了!!不过还是谢谢各位了,我 会给分的
      

  12.   

    对了,有时会出现这样的情况,就是我第一次点启动它提示错误,然后进入中断模式,提示我是结束还是调试的时候我点调试,而后我在点启动就可以运行了,只要不关闭工程它就可以运行,但是当我将它编译我.exe时就运行不了,或者当我保存这个工程,关闭它,然后在次打开工程它就又无法运行了, 并且不管怎么改端口它都无法运行!