各位大侠:         我刚开始学WINSOCK在做一个一点到多点的网络程序的时候(一个服务端对多个客户端)遇到一些问题,请教各位高手指教,谢谢。源码如下:'服务器端
Private Sub Form_Load()
  IntMax = 1
  Load ServerWsk(IntMax)
  ServerWsk(IntMax).LocalPort = 1001
  ServerWsk(IntMax).Listen
End SubPrivate Sub ServerWsk_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  If ServerWsk(Index).State <> sckClosed Then ServerWsk(Index).Close
    ServerWsk(Index).Accept requestID
  IntMax = IntMax + 1
  Load ServerWsk(IntMax)
  ServerWsk(IntMax).LocalPort = 1001
  ServerWsk(IntMax).Listen
End Sub'客户端
Private Sub Form_Load()
  ClientWsk.RemoteHost = "192.168.255.4"
  ClientWsk.RemotePort = 1001
  ClientWsk.LocalPort = 0
  ClientWsk.Connect
End SubPrivate Sub ClientWsk_Connect()
MsgBox "成功联接"
End Sub说明:ServerWsk和ClientWsk为WinSock控件问题:
     1.我在本机测试时为什么连接不稳定,有时候能够连接上三个客户端,有时候能连接两个或都更少?有什么解决办法吗?还是因为在本机会这样在网络上不会?
     2.是不是因为使用了相同的端口号?因为客户端不确定性,如果使用动态的端口号客户端怎么样取服务器的相应端口?
      请各位高手指点,高分相送,在线等待!!!

解决方案 »

  1.   


    Private Sub ServerWsk_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    IntMax = IntMax + 1 
    Load ServerWsk(IntMax)
     If ServerWsk(IntMax).State <> sckClosed Then ServerWsk(IntMax).Close
        ServerWsk(IntMax).Accept requestID
    ' ServerWsk(IntMax).LocalPort = 1001
    End Sub
      

  2.   

    我明白你的用意。
    一般做这程序的时候,都是一个专门listen
    然后用然的winsock去accept.
    上面的程序有错吗?在哪儿??
      

  3.   

    哦,我明白你的意思了,我刚试了,只能连接一个,第二个连接的时候触发不了服务端的ConnectionRequest事件。就是这样的。
      

  4.   

    建议你换一种方法
    一个winsock和一个winsock数组
    winsock专门侦听accept的时候就用数组来。
    可以连很多的。