.NET VB如何让服务器侦听多个端口?

问题描述:

我正在写一个非常小而简单的服务器,我想在多个端口上进行监听。.NET VB如何让服务器侦听多个端口?

我正在使用下面,但连接到端口8081不被接受 - 任何建议我做错了什么?

(其实我是想监听多个端口,我不会混淆多个连接)

Public Sub StartServer() 

    Dim ports() As Integer = {8080, 8081} 
    Dim portList As String = "" 



    Dim address As IPAddress = IPAddress.Any 

    ' map the end point with IP Address and Port 
    'Create Endpoints 
    Dim EndPoints(ports.Length) As IPEndPoint 

    'Create sockets 
    Dim Sockets(ports.Length) As Socket 

    Dim i As Integer = 0 
    For i = 0 To ports.Length - 1 
     portList = portList & ports(i) & " : " 
     EndPoints(i) = New IPEndPoint(address, ports(i)) 
     Sockets(i) = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 
     Sockets(i).Bind(EndPoints(i)) 
     Sockets(i).Listen(20) 

     Log("Listening on: All ips & Port: " & ports(i)) 


    Next 

    Log("Listening on: All ips & Ports: " & portList) 



    Do While Not Me.DoStop 
     ' Wait for an incoming connections 
     For i = 0 To ports.Length - 1 
      Dim sock As Socket = Sockets(i).Accept() 


      ' Connection accepted 

      ' Initialise the Server class 
      Dim ServerRun As New Server(sock) 

      ' Create a new thread to handle the connection 
      Dim t As Thread = New Thread(AddressOf ServerRun.HandleConnection) 


      t.IsBackground = True 
      t.Priority = ThreadPriority.BelowNormal 
      t.Start() 
     Next 

     ' Loop and wait for more connections 
    Loop 

End Sub 

同步方法Sockets(i).Accept将阻塞,直到它接收到的连接。在您的第一个连接上有连接之前,不会在第二个套接字上调用accept方法。

我想你想实现异步插座,还有在http://msdn.microsoft.com/en-us/library/fx6588te.aspx

样本您阵列也是一个元素过长。

Dim EndPoints(ports.Length - 1) As IPEndPoint