0

如何指定要开始侦听的适配器?

我有一个在 PC 上运行的应用程序,恰好有 2 个网络适配器在不同的子网上运行(一个网络用于商业 LAN 基础设施,一个网络用于 TCP 摄像机)

我有一个类,它打开一个 TCP 服务器并在特定端口上侦听来自 LAN 上的客户端的连接。

问题是我的 TCP 服务器类初始化并开始监听连接到摄像机的适配器。来自商务 LAN 的任何连接请求都会失败,不会得到处理。

问题是,如何指定要开始监听的适配器?

下面的代码摘录(这不是完整的类,只是关键方法)

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
4

1 回答 1

1

这取决于您的LocalIP. 您可以将其设置为“0.0.0.0”以侦听所有接口,也可以将其设置为侦听特定接口。

在您的代码中,您将其设置为主机名的第一个 IP 地址。不过,这可能并不总是有效。

于 2010-01-06T12:59:45.057 回答