Вопрос

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

У меня есть приложение, запущенное на ПК, у которого есть 2 сетевых адаптера, работающих в разных подсетях (одна сеть для инфраструктуры бизнес-локальной сети, одна для камер 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
Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top