3

WinPCapDevice を使用しており、既に初期化しています。そのデバイスから IP を取得できるようにしたいのですが、デバイスの IP アドレスを抽出する方法がどこにも見つかりません。それを行う方法がない場合、WinPCapDevice の IP アドレスを取得して IP アドレスのリストと照合できる別の方法はありますか?

これが、私が話しているコードの小さなチャンクです。

        IPHostEntry host;
        host = Dns.GetHostEntry(Dns.GetHostName());

        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {

                localIPAddress = ip.ToString();
                //Want to check if my WinPCapDevice device's IP is equal to ip
            }
        }
4

1 に答える 1

5

このWinPcapDeviceクラスには、 というプロパティが含まれていますAddresses。このプロパティは、デバイスに関連付けられたすべてのアドレス (IP) を保持します。

string localIPAddress = "...";

WinPcapDeviceList devices = WinPcapDeviceList.Instance;

foreach(WinPcapDevice dev in devices)
{
  Console.Out.WriteLine("{0}", dev.Description);

  foreach(PcapAddress addr in dev.Addresses)
  {
    if(addr.Addr != null && addr.Addr.ipAddress != null)
    {
      Console.Out.WriteLine(addr.Addr.ipAddress);

      if(localIPAddress == addr.Addr.ipAddress.ToString())
      {
        Console.Out.WriteLine("Capture device found");           
      }
    }
  }
}

もちろん、CaptureDeviceListクラスを使用して特定のデバイスのリストを取得することもできます。このリストのすべてのデバイスは を実装していICaptureDeviceます。Address プロパティにアクセスするには、 a WinPcapDevice、 aLibPcapLiveDeviceまたは aにキャストする必要があります。AirPcapDevice

お役に立てれば。

于 2011-11-03T20:29:41.233 に答える