C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 名前でPINGした時のIPを取得したい


(過去ログ 113 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■66797 / inTopicNo.1)  名前でPINGした時のIPを取得したい
  
□投稿者/ pon (1回)-(2013/05/28(Tue) 11:15:03)

分類:[VB.NET/VB2005 以降] 

vb.netで開発中です。

[PING 自分のホスト名]で表示されるIPを取得したいのですが、
Dns.GetHostEntry(Dns.GetHostName)
を使用すると複数のIPアドレスが返ってきてしまいます。
※メインのIP以外は仮想NICのアドレスです。

その他WMIを使用する方法なども試しましたがやはり
複数のIPが返ってきてしまいます。


名前でPINGした場合はIPは一つしか表示されませんので、
そのIPをVBアプリで取得したいのですが、
その方法をご教示いただけないでしょうか。

よろしくお願いします
引用返信 編集キー/
■66798 / inTopicNo.2)  Re[1]: 名前でPINGした時のIPを取得したい
□投稿者/ kan (1回)-(2013/05/28(Tue) 12:55:40)
例えば、取得されたアドレスリスト要素のAddressFamily(=AddressFamily.InterNetwork)で判別することは可能でしょうか。
あとはIPv6のアドレスが含まれていればそれを除外する、などといったところでしょうか。

引用返信 編集キー/
■66799 / inTopicNo.3)  Re[2]: 名前でPINGした時のIPを取得したい
□投稿者/ pon (2回)-(2013/05/28(Tue) 13:22:46)
No66798 (kan さん) に返信
> 例えば、取得されたアドレスリスト要素のAddressFamily(=AddressFamily.InterNetwork)で判別することは可能でしょうか。
> あとはIPv6のアドレスが含まれていればそれを除外する、などといったところでしょうか。
>

返信ありがとうございます!

さっそくやってみたのですが条件なしの場合と同じ件数のIPが表示されてしまいました。
やり方は
AddressFamily=AddressFamily.InterNetworkの条件をつける
AddressFamily <> AddressFamily.InterNetworkV6の条件をつける
という方法だったのですが、これで良かったでしょうか。


他に何か可能性だけでも心当たりありましたらお願いいたします。


引用返信 編集キー/
■66800 / inTopicNo.4)  Re[3]: 名前でPINGした時のIPを取得したい
□投稿者/ pon (3回)-(2013/05/28(Tue) 14:18:42)
pon さんの Web サイト
WMIのWin32_PingStatusを使用した方法で解決しました!

※System.Managementを参照に追加&Imports済み

Dim searcher As New ManagementObjectSearcher
Dim PrcSrc As ManagementObjectCollection
Dim Prc As ManagementObject
Dim iplist As New List(Of String)

searcher.Query.QueryString = "SELECT * FROM Win32_PingStatus where address = '" & Dns.GetHostName & "' "
PrcSrc = searcher.Get
   
For Each Prc In PrcSrc
   iplist.Add(Prc("ProtocolAddress"))
Next

これでiplistに取得したかったIPアドレスが1件のみ格納されました。

WMI Fun!!を参考にしています。

解決といたします。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -