.netリモート処理でリモートオブジェクトのIPアドレスを見つける
質問
.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 []を返します。
所属していません StackOverflow