服务器端:
一个WINSOCK控件(Winsock1)用来侦听
一个WINSOCK(ServerWsk)控件数组用来连接。
一个文本框(MsgTxt)用来发消息。
一个变量(IntMax )用来保存连接总数。'发送
Private Sub Command2_Click()
Dim i As Integer
  If MsgTxt.Text <> "" Then
    For i = 1 To IntMax
      If ServerWsk(i).State <> sckClosed Then
        ServerWsk(i).SendData MsgTxt.Text
      End If
    Next i
  End If
End Sub'侦听
Private Sub Form_Load()
  IntMax = 0
  Winsock1.LocalPort = 1001
  Winsock1.Listen
End SubPrivate Sub ServerWsk_Close(Index As Integer)
  ServerWsk(Index).Close
End Sub'初始化连接
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  IntMax = IntMax + 1
  Load ServerWsk(IntMax)
  If ServerWsk(IntMax).State <> sckClosed Then ServerWsk(IntMax).Close
    ServerWsk(IntMax).Accept requestID
End Sub客户端:Private Sub ClientWsk_Connect()
  MsgBox "成功联接"
End Sub'接收
Private Sub ClientWsk_DataArrival(ByVal bytesTotal As Long)
Dim abc As String
  ClientWsk.GetData abc
  Text1.Text = abc
End SubPrivate Sub Command1_Click()
  ClientWsk.RemoteHost = "192.168.255.4"
  ClientWsk.RemotePort = 1001
  ClientWsk.LocalPort = 0
  ClientWsk.Connect
End Sub'发送
Private Sub Command2_Click()
  If ClientWsk.State <> sckClosed Then
    ClientWsk.SendData Text1.Text
  End If
End Sub

解决方案 »

  1.   

    客户的remoteport要和服务器负责侦听的winsock的localport一样,但服务器上增加的WINSOCK的localport不用管,默认为0。Option Explicit
    Const MaxConnect = 8
    Dim inUsed(MaxConnect) As Boolean
    Dim i As Long
    Dim CilentT() As Byte
    Dim ErrorCode As IntegerPrivate Sub Form_Load()
        Listener.LocalPort = 4477
        Listener.Listen
    End SubPrivate Sub Listener_ConnectionRequest(ByVal requestID As Long)
        
        For i = 1 To MaxConnect
            If Not inUsed(i) Then
               inUsed(i) = True
               Exit For
            End If
        Next
        If i > MaxConnect Then
           Exit Sub
        End If
        Load S(i)
        S(i).Accept requestID
    End SubPrivate Sub S_Close(Index As Integer)
       S(Index).Close
       Unload S(Index)
       inUsed(Index) = False
    End SubPrivate Sub S_DataArrival(Index As Integer, ByVal bytesTotal As Long)
        Dim DataLong As Integer
        Dim ys As Integer
        Dim arr() As Byte
        
        S(Index).GetData CilentT, vbByte
        For i = 0 To bytesTotal - 1
            Text1(i).Text = Hex(CilentT(i))
        Next
     End Sub'客户端
    Private Sub Client_Connect()
       Connected = True
       frmMenu.SB1.Panels(1).Text = "&Iacute;&oslash;&Acirc;&ccedil;&Aacute;&not;&frac12;&Oacute;&sup3;&Eacute;&sup1;&brvbar; &pound;&iexcl;"
       Timer1.Enabled = True
    End SubPrivate Sub Client_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
        Connected = False
        frmMenu.SB1.Panels(1).Text = "err"
        Client.Close
    End SubPrivate Sub Client_DataArrival(ByVal bytesTotal As Long)
        Client.GetData arr, vbByte
        DataLong = bytesTotal
    End Sub
    Private Sub Form_Load()
        DEVICE = False
        Connected = False
        Client.Protocol = sckTCPProtocol
        Client.RemoteHost = "127.0.0.1"
        Client.RemotePort = 4477
        
        dp(0) = &HC8: dp(1) = &H99
        
        If Not Connected Then
           frmMenu.SB1.Panels(1).Text = "正在连接 ..."
           Client.Connect
        Else
           frmMenu.SB1.Panels(1).Text = "已经连接..."
        End If
     End Sub