2010-01-06 40 views
0

如何指定開始偵聽哪個適配器?將TCP服務器綁定到特定適配器

我恰好有2個網絡適配器不同的子網運行在PC上運行的應用程序(一個網絡,業務網絡基礎設施,一個用於TCP相機)

我有打開了一個TCP類服務器並監聽特定端口上的連接,從局域網上的客戶端進入。

問題是我的TCP服務器類初始化並開始偵聽連接到攝像機的適配器。來自業務局域網的任何連接請求都會失敗,因此無法處理。

問題是,如何指定開始偵聽哪個適配器?

代碼摘錄如下(這不是完整的類,只是主要方法)

Public Sub New(ByVal Name As String) 
      'get config 
      _bootStrap = New TCPServerBootstrap(Name) 
      'start log file 
      _Trace = New ACS.Utility.Logging("Connectivity." & Name & ".TcpServer." & _bootStrap.Port) 
      _Trace.WriteLog("TCP Server Starting") 
      Dim LocalIP As System.Net.IPAddress = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(0) 
      _myListener = New TcpListener(LocalIP, _bootStrap.Port) 
      _Timer = New System.Timers.Timer 
      _Timer.Interval = 500 
      _Timer.Enabled = False 
      _name = Name 
      _details = _myListener.LocalEndpoint.ToString 
     End Sub 

    Public Sub BeginListening() 
      'Starts the listener and uses the Asynchronous 'Begin' method to handle inbound connection attempts 
      _Trace.WriteLog("Begin Listening on: " & _myListener.LocalEndpoint.ToString) 
      _myListener.Start() 
      _myListener.BeginAcceptSocket(New AsyncCallback(AddressOf HandleIncomingConnectionRequest), _myListener) 
     End Sub 

回答

1

這取決於你LocalIP。您可以將其設置爲「0.0.0.0」以在所有接口上偵聽,或者可以將其設置爲在特定接口上偵聽。

在您的代碼中,將其設置爲主機名的第一個IP地址。這可能並不總是有效。

+0

感謝Frunsi,設置在所有接口上偵聽將很好地解決問題。優秀! – GermanAndy 2010-01-08 12:26:21

相關問題