发送端代码:
Private Sub cmdsend_Click()
 Winsock1.RemoteHost = "192.168.0.13"/接收端地址
  Winsock1.RemotePort = "6789"/接收端端口
  Winsock1.Connect
End SubPrivate Sub Winsock1_Connect()
    Winsock1.SendData txta
End Sub接收端代码:
Private Sub cmdaccpet_Click()
  Winsock1.Listen
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData Str
    text1.Text = Str
End Sub
请问以上代码有错误吗,为什么始终连接失败,无法发送成功?

解决方案 »

  1.   

    Winsock1.RemotePort = 6789
    去掉引号
      

  2.   

    Winsock1.Connect只能一次,不能每次都连接的.
      

  3.   

    1、接收端代码需要指定侦听端口
    Private Sub cmdaccpet_Click()
    Winsock1.LocalPort = 6789
    Winsock1.Listen
    End Sub
    2、你的连接只能连接一次,如果要使服务端可以连接多个客户端,可以研究以下代码试试。
    Private intMax As LongPrivate Sub Form_Load()
       intMax = 0
       sckServer(0).LocalPort = 6789
       sckServer(0).Listen
    End SubPrivate Sub sckServer_ConnectionRequest _
    (Index As Integer, ByVal requestID As Long)
       If Index = 0 Then
          intMax = intMax + 1
          Load sckServer(intMax)
          sckServer(intMax).LocalPort = 0
          sckServer(intMax).Accept requestID
          Load txtData(intMax)
       End If
    End Sub3、你使用的是TCP连接,注意一下.Protocol属性。
      

  4.   

    你写了accept代码没有啊,你必须在request里写上的.否则就会出错。
      

  5.   

    如果是listen的winsock控件在accpet前要先close的哦.
      

  6.   

    好像这两个的代码要放在form_load中才行。
      

  7.   

    发送端代码:
    Private Sub Form_Load()
        Winsock_Connect
    End SubPrivate Sub cmdsend_Click()
        Winsock1.SendData txta
    End SubPrivate Sub Winsock1_Connect()
     Winsock1.RemoteHost = "192.168.0.13"  '接收端地址
      Winsock1.RemotePort = 6789    '接收端端口
      Winsock1.Connect
    End Sub接收端代码:
    Private Sub cmdaccpet_Click()
      Winsock1.LocalPort = 6789
      Winsock1.Listen
    End Sub'确认连接
    Private Sub Winsock1_ConnectionRequest _
    (ByVal requestID As Long)
    '检查控件的 State 属性是否为关闭的。
    '如果不是,在接受新的连接之前先关闭此连接。
      If Winsock1.State <> sckClosed Then Winsock1.Close
    '接受具有 requestID 参数的连接。
      Winsock1.Accept requestID
    End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String 
        Winsock1.GetData strData
        Text1.Text = strData
    End Sub