Привязать TCP-сервер к определенному адаптеру - PullRequest
0 голосов
/ 06 января 2010

Как указать, какой адаптер начать прослушивать?

У меня есть приложение, работающее на ПК, на котором установлено 2 сетевых адаптера, работающих в разных подсетях (одна сеть для инфраструктуры Business LAN, другая для камер TCP)

У меня есть класс, который открывает TCP-сервер и прослушивает определенный порт для подключений, поступающих от клиентов в локальной сети.

Проблема в том, что мой класс TCP-сервера инициализируется и начинает прослушивать адаптер, подключенный к камерам. Любой запрос на подключение, поступающий из Business 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

1 Ответ

1 голос
/ 06 января 2010

Это зависит от вашего LocalIP.Вы можете установить его на «0.0.0.0» для прослушивания на всех интерфейсах или установить на прослушивание на определенном интерфейсе.

В своем коде вы устанавливаете первый IP-адрес вашего имени хоста.Что может не всегда работать, хотя.

...