以下转自MSDN:接受多个连接请求
上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。Private intMax As LongPrivate Sub Form_Load()
   intMax = 0
   sckServer(0).LocalPort = 1001
   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 Sub

解决方案 »

  1.   

    在窗口体上放一个WINSOCK控件,比如:(下面是我用的一段代码)
    Private Sub Wsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    Dim ArrayIndex As Integer '遍历WinSock控件数组时使用
    Dim OpenSocketPos As Integer  '新连接有使用的WinSock所使用的控件代号
    Dim Dummy As StringIf Not SrvFlag Then Exit SubArrayIndex = 0
    OpenSocketPos = 0
    Do While (OpenSocketPos = 0) And (ArrayIndex < UBound(gActiveSockets))
       ArrayIndex = ArrayIndex + 1
       If Not gActiveSockets(ArrayIndex).connected Then  '如果在已打开的控件数组中找到一个空隙位置,则选定位置后停止遍历
          OpenSocketPos = ArrayIndex
       End If
    LoopIf OpenSocketPos = 0 Then  '如果没有可用的WinSock控件实例,则生新一个新的控件实例
       OpenSocketPos = UBound(gActiveSockets) + 1
       ReDim Preserve gActiveSockets(OpenSocketPos)
    End IfLoad Wsock(OpenSocketPos)
    gActiveSockets(OpenSocketPos).connected = True '标记实例
    Wsock(OpenSocketPos).Accept requestID
    gActiveSockets(OpenSocketPos).ClientIP = Wsock(OpenSocketPos).RemoteHostIP
    gActiveSockets(OpenSocketPos).ClientName = Wsock(OpenSocketPos).RemoteHost
    Sbar.Panels(1) = "已连接:" + gActiveSockets(OpenSocketPos).ClientIP
    lstSTATE.AddItem "客户 " + gActiveSockets(OpenSocketPos).ClientIP + " 已经连接!" + Sps + Str(Now)
    End Sub
      

  2.   

    参考楼上的做法,MSDN里有这个例子你可以去看看。