【问题标题】:Find the ip address of a remote object in .net remoting在 .net 远程处理中查找远程对象的 IP 地址
【发布时间】:2008-10-30 18:02:29
【问题描述】:

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

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

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

RemoteFile server.GetFile(string path);

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

【问题讨论】:

    标签: c# remoting


    【解决方案1】:

    如果您知道要从中调用远程方法的服务器的 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());
    }
    

    如果您不知道远程服务器的 IP 地址,您可以使用服务器的主机名轻松获取它,如下所示:

    Dns.GetHostAddresses("remote_host_address")
    

    这将返回一个 IPAddress[],其中包括该主机的所有已解析地址。

    【讨论】:

    • 我写了一些看起来很像这样的东西,但我认为它的 cmets 较少。
    猜你喜欢
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多