2010-01-06 37 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

相关问题