.netリモート処理でリモートオブジェクトのIPアドレスを見つける

StackOverflow https://stackoverflow.com/questions/251150

  •  05-07-2019
  •  | 
  •  

質問

.netリモート処理を使用するクライアントサーバーアプリケーションがあります。クライアントはLAN内にあり、事前にその場所がわかりません。

ファイル転送を行うこともありますが、最適化として、クライアントが実際にサーバーと同じマシン上にあるかどうかを確認したい(非常に可能です)。この場合、File.Copyを実行するだけです。

クライアントがリモートメソッドを呼び出すとしましょう:

RemoteFile server.GetFile(string path);

クライアント(リクエスター)が同じマシン上にあるかどうかを確認するにはどうすればよいですか?

役に立ちましたか?

解決

リモートメソッドを呼び出しているサーバーの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 []を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top