在.net远程处理中找到远程对象的IP地址

时间:2008-10-30 18:02:30

标签: c# remoting

我有一个使用.net远程处理的客户端 - 服务器应用程序。客户在局域网中,我不提前知道他们的位置。

有时我们会进行文件传输,作为优化,我想确定客户端是否实际上与服务器在同一台机器上(很可能)。在这种情况下,我只需要做一个File.Copy。

假设客户端调用远程方法:

RemoteFile server.GetFile(string path);

如何判断客户端(请求者)是否在同一台机器上?

1 个答案:

答案 0 :(得分: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")

返回IPAddress [],其中包含该主机的所有已解析地址。