2010-01-06 4 views
0

Comment puis-je spécifier sur quel adaptateur commencer l'écoute?Lier le serveur TCP à une carte spécifique

J'ai une application en cours d'exécution sur un PC qui arrive à avoir 2 cartes réseau en cours d'exécution sur différents sous-réseaux (un réseau d'infrastructure LAN d'affaires, une pour les caméras TCP)

J'ai une classe qui ouvre une connexion TCP serveur et écoute sur un port spécifique pour les connexions venant des clients sur le LAN.

Le problème est que ma classe de serveur TCP s'initialise et commence à écouter sur l'adaptateur qui est connecté aux caméras. Toute demande de connexion provenant du réseau local d'entreprise échoue, elle n'est pas traitée.

La question est, Comment puis-je spécifier sur quel adaptateur commencer l'écoute?

Extrait du code ci-dessous

(ce n'est pas la classe complète, juste des méthodes clés)

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 

Répondre

1

Cela dépend de votre LocalIP. Vous pouvez le régler sur "0.0.0.0" pour écouter sur toutes les interfaces, ou vous pouvez le configurer pour écouter sur une interface spécifique.

Dans votre code, vous le définissez à la première adresse IP de votre nom d'hôte. Ce qui peut ne pas toujours fonctionner cependant.

+0

Merci Frunsi, mettre en place pour écouter sur toutes les interfaces permettra de résoudre le problème bien. Excellent! – GermanAndy

Questions connexes