Pergunta

Como posso especificar em qual adaptador começar a ouvir?

Eu tenho um aplicativo em execução em um PC que possui 2 adaptadores de rede em execução em diferentes sub -redes (uma rede para infraestrutura de LAN de negócios, um para câmeras TCP)

Eu tenho uma classe que abre um servidor TCP e ouve uma porta específica para conexões que vêm dos clientes na LAN.

O problema é que minha classe de servidor TCP inicializa e começa a ouvir no adaptador conectado às câmeras. Qualquer solicitação de conexão que vem da LAN comercial falha, ela não é tratada.

A questão é, Como posso especificar em qual adaptador começar a ouvir?

Código de trecho abaixo (esta não é a classe completa, apenas os principais métodos)

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
Foi útil?

Solução

Depende do seu LocalIP. Você pode configurá -lo como "0.0.0.0" para ouvir em todas as interfaces ou defini -lo para ouvir em uma interface específica.

No seu código, você o define para o primeiro endereço IP do seu nome de host. O que nem sempre funciona.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top