2008-10-30 5 views
1

J'ai une application client-serveur qui utilise .net remoting. Les clients sont dans un réseau local et je ne connais pas leur emplacement à l'avance.Trouver l'adresse IP d'un objet distant dans .net remoting

Parfois, nous faisons des transferts de fichiers et comme une optimisation je veux déterminer si un client est en fait sur la même machine que le serveur (c'est tout à fait possible). Dans ce cas, j'ai seulement besoin de faire un fichier.

Disons qu'un client appelle la méthode à distance:

RemoteFile server.GetFile (string path);

comment puis-je déterminer si le client (le demandeur) est sur la même machine?

Répondre

2

Si vous connaissez l'adresse IP du serveur que vous appelez la méthode distante de vous pouvez utiliser cette méthode pour dire si oui ou non vous êtes sur la même machine:

using System.Net; 

private bool CheckIfServer(IPAddress serverIP) 
{ 
    // Get all addresses assigned to this machine 
    List<IPAddress> ipAddresses = new List<IPAddress>(); 
    ipAddresses.AddRange(Dns.GetHostAddresses(Dns.GetHostName())); 

    // If desirable, also include the loopback adapter 
    ipAddresses.Add(IPAddress.Loopback); 

    // Detect if this machine contains the IP for the remote server 
    // Note: This uses a Lambda Expression, which is only available .Net 3 or later 
    return ipAddresses.Exists(i => i.ToString() == serverIP.ToString()); 
} 

Si vous n » sais le IPAddress pour votre serveur distant, vous pouvez facilement l'obtenir en utilisant le nom d'hôte du serveur comme ceci:

Dns.GetHostAddresses("remote_host_address") 

ce retourne un IPAddress [], qui comprend toute l'adresse résolue de cet hôte.

+0

J'ai écrit quelque chose qui ressemble beaucoup à ceci, je pense qu'il avait moins de commentaires cependant. – Erin

Questions connexes