2008-10-30 2 views
1

У меня есть клиент-серверное приложение, использующее удаленную сеть .net. Клиенты находятся в локальной сети, и я не знаю их местоположения заранее.Найти ip-адрес удаленного объекта в удалении .net

Иногда мы осуществляем передачу файлов, и в качестве оптимизации я хочу определить, действительно ли клиент находится на том же компьютере, что и сервер (это вполне возможно). В этом случае мне нужно всего лишь сделать File.Copy.

Допустим, клиент вызывает удаленный метод:

уд_файл server.GetFile (строка путь);

Как определить, находится ли клиент (запросчик) на одной машине?

ответ

2

Если вы знаете IP-адрес сервера вы призывающий удаленный метод из вы можете использовать этот метод, чтобы сказать, является ли или не вы на ту же машину:

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()); 
} 

Если вы не» т знать IPAddress для удаленного сервера, вы можете легко получить его, используя имя хоста сервера, как это:

Dns.GetHostAddresses("remote_host_address") 

Это возвращает IP-адрес [], который включает в себя все разрешенный адрес для этого хоста.

+0

Я написал что-то похожее на это, я думаю, что у него было меньше комментариев. – Erin 2008-10-30 19:14:51