0

PCのIPアドレスを取得することについて少し混乱しています。複数のPCで実行されているwinformsアプリケーションがあります。特定の状況でのアプリケーションは、他のアプリにメッセージを送信する必要があります。そのために、アプリを実行している PC に関する情報をデータベースに書き込みます。データの中には IP アドレスがあります。アイデアは、WCF を使用して、メッセージを通信し、実行中のアプリケーションにブロードキャストすることです。したがって、問題は、機能する IP アドレスを取得する方法です。イーサネット IP アドレス、Wi-Fi アドレス、VMware アドレスを使用してノートブックをイメージします。それらのどれを選択する必要がありますか?

これが私が使用するコードです。ただし、ノートブックの場合は vmware アドレスを返しているため、役に立ちません。

private String GetMyIp()
{
    String ipAddress = 
      System.Net.Dns.GetHostEntry(
         System.Net.Dns.GetHostName())
      .AddressList.First(i => i.AddressFamily.Equals(
         System.Net.Sockets.AddressFamily.InterNetwork))
      .ToString();
    return ipAddress;
 }

主なアイデアは、接続している IP アドレスを取得することです。明確であることを願っています。

前もって感謝します。

4

2 に答える 2

1

接続を確立しない限り、コンピュータがどのカードを使用するか、または使用したかを判断するのは大変な作業です。

これが私がそれをした方法です..私は接続を確立し、それがそれを行うために使用したものを尋ねました、実際に私はあなたのコードの一部を使用しました、それは確かに機能するようです

また、もちろん、接続のもう一方の端も同様の方法でリモート(クライアントなど)のアドレスを確認できます。

class Program
{
    static void Main(string[] args)
    {
    TcpClient t = new TcpClient("www.microsoft.com", 80);


    Console.WriteLine(GetMyIp(t.Client.LocalEndPoint.AddressFamily));
    t.Close();
}

static private String GetMyIp(AddressFamily addr)
{
    String ipAddress = System.Net.Dns.GetHostEntry(
        System.Net.Dns.GetHostName()
        )
        .AddressList.First(i => i.AddressFamily.Equals(addr)).ToString();
    return ipAddress;
} 

}

于 2012-07-19T13:26:37.763 に答える
1

アクティブなネットワーク接続を列挙する際に考慮すべき点がいくつかあります。Wi-Fi アダプターと LAN 接続があり、両方がアクティブな場合、実行中のアプリケーションでどちらを使用しますか?

中央の WCF パブリッシュ/サブスクライブ メソッドの優れたプラクティスを使用して、実行中のクライアントが中央の WCF サービスを要求し、おそらく WCF サーバー側で EndPoint アドレスを格納するようにしないのはなぜですか?

于 2012-07-19T13:29:41.120 に答える