2010-10-15 5 views
1

Dites, j'ai 2 cartes réseau actives ou plus sur ma machine. J'utilise une application C# à partir de laquelle j'appelle un service asynchrone. Je veux être en mesure de déterminer quelle adresse IP ai-je utilisé lors de l'appel de ce service. Par exemple, mes deux adresses IP actives sont 192.168.10.5 et 192.168.5.7 et l'adresse IP du service est 192.168.7.12.déterminez quelle adresse IP a été utilisée pour ouvrir une URL dans C#

+0

duplication possible de [Obtenir l'adresse IP du client dans WCF 3.0] (http://stackoverflow.com/questions/93162/obtaining-client-ip-address-in-wcf-3-0) – Timores

+0

C'est un peu flou de la question - essayez-vous de déterminer cette information auprès du client ou du service? –

+0

déterminez-le à partir du client afin que je l'envoie au serveur, afin que le serveur puisse contacter le client en utilisant cette adresse – Zee99

Répondre

1

Vous pouvez essayer ceci:

public static string GetExternalIP() 
{ 
    try 
    { 
     using (WebClient client = new WebClient()) 
     { 
      string ip = client.DownloadString("http://whatismyip.com/automation/n09230945.asp"); 
      return ip; 
     } 
    } 
    catch (Exception) { return null; } 
} 

code légèrement retravaillé de http://www.hackcommunity.com/Thread-ASKING-FOR-REP-ROCKY-PART-2

0

Hmm. Je ne pense pas qu'il existe une solution gérée. GetBestInterface et/ou GetBestRoute sembleraient être les bons endroits pour commencer dans l'API WIn32 (probablement GetBestRoute, en le lisant).

De plus, en raison des caprices de cette merveilleuse chose qu'Internet et du routage dynamique, au moment où vous avez trouvé la réponse, cela a peut-être changé.

Il est peut-être préférable de fournir au service une liste d'adresses IP, et de le laisser utiliser celui qui fonctionne.

Modifier

Ou vous pourriez être en mesure d'utiliser WCF callbacks et faire WCF ne la plupart des travaux dur (je ne l'ai pas passé beaucoup de temps dans WCF lui-même, ne sais pas combien il serait travail faites pour vous ici)

Questions connexes