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

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

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

マスク長から使用できるIPアドレスの列挙

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

■87174 / inTopicNo.1)  マスク長から使用できるIPアドレスの列挙
  
□投稿者/ rara (1回)-(2018/04/20(Fri) 13:29:27)

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

VB.NETで
192.168.0.123/24 とか
192.168.0.25/16 など
の値から 使用できるIPアドレスの一覧(使用できるすべてのIPアドレス)を
列挙したいのですが
まったくもって 良い方法が分かりません。

教えてくんで申し訳ないのですがヒントやコードをおしえていただけると幸いです。


引用返信 編集キー/
■87175 / inTopicNo.2)  Re[1]: マスク長から使用できるIPアドレスの列挙
□投稿者/ kaina (42回)-(2018/04/20(Fri) 13:38:30)
調査対象のIPアドレスに対して順番にPINGして
PINGが成功するか失敗するか調べてみたら
どうでしょうか。

引用返信 編集キー/
■87176 / inTopicNo.3)  Re[1]: マスク長から使用できるIPアドレスの列挙
□投稿者/ 魔界の仮面弁士 (1649回)-(2018/04/20(Fri) 13:40:59)
No87174 (rara さん) に返信
> 使用できるIPアドレスの一覧(使用できるすべてのIPアドレス)を
> 列挙したいのですが

ping && arp を Process クラスで呼び出して、標準出力で受け取ってみるとか。
http://www.atmarkit.co.jp/ait/articles/0306/28/news003.html
引用返信 編集キー/
■87180 / inTopicNo.4)  Re[2]: マスク長から使用できるIPアドレスの列挙
□投稿者/ PANG2 (4回)-(2018/04/20(Fri) 13:52:39)
2018/04/20(Fri) 14:01:56 編集(投稿者)

サブネットマスク計算
https://note.cman.jp/network/subnetmask.cgi

ほしい値は、ホストアドレス(使用可能IP)でしょうか?

192.168.0.123/24 なら 192.168.0.1〜192.168.0.254

頑張れば、自力で計算できると思いますが、どうでしょうか?
引用返信 編集キー/
■87183 / inTopicNo.5)  Re[2]: マスク長から使用できるIPアドレスの列挙
□投稿者/ らら (1回)-(2018/04/20(Fri) 14:07:42)
みなさん ありがとうございます。

192.168.0.123/24 の場合において ホストアドレスが0.0になるなどは
わかるのですが

192.168.0.1 〜 192.168.0.254 をすべての書き出したいのです。
/24とかならいいのですが /16と/12等になったときにどうしようって感じなのです。

引用返信 編集キー/
■87184 / inTopicNo.6)  Re[3]: マスク長から使用できるIPアドレスの列挙
□投稿者/ 魔界の仮面弁士 (1652回)-(2018/04/20(Fri) 14:11:52)
No87183 (らら さん) に返信
> 192.168.0.1 〜 192.168.0.254 をすべての書き出したいのです。
> /24とかならいいのですが /16と/12等になったときにどうしようって感じなのです。

「使用できるIPアドレス」というのは、下記のどちらの意味でしょうか?

(1) サブネットマスクで指定された範囲のアドレスの一覧
(2) 上記のうち、ネットワーク上でまだ割り当てられていない、未使用のIPアドレス


前者だとしたら、単純に For ループ等で書き出せば良いと思います。
後者であれば、ping && arp などを使うことを検討してみてください。
引用返信 編集キー/
■87187 / inTopicNo.7)  Re[3]: マスク長から使用できるIPアドレスの列挙
□投稿者/ らら (2回)-(2018/04/20(Fri) 14:21:47)
((32-/*)^2 )-2 =使用できるIPアドレス数

192.168.0.0 ← ホストアドレスをビット化 "11000000110000001100000011000000"
して
1ビット足して 8bitずつ分けて 10進数に戻してを
使用できるIPアドレス分すればできるのかな?
とおもってるんですが


192.168.0.0 ← ホストアドレスをビット化 "11000000110000001100000011000000"

この文字列にどうやって1bitずつたしていけばいいんだろう・・・って感じなのです。
引用返信 編集キー/
■87188 / inTopicNo.8)  Re[4]: マスク長から使用できるIPアドレスの列挙
□投稿者/ らら (3回)-(2018/04/20(Fri) 14:22:50)

(1) サブネットマスクで指定された範囲のアドレスの一覧になります。


No87184 (魔界の仮面弁士 さん) に返信
> ■No87183 (らら さん) に返信
>>192.168.0.1 〜 192.168.0.254 をすべての書き出したいのです。
>>/24とかならいいのですが /16と/12等になったときにどうしようって感じなのです。
>
> 「使用できるIPアドレス」というのは、下記のどちらの意味でしょうか?
>
> (1) サブネットマスクで指定された範囲のアドレスの一覧
> (2) 上記のうち、ネットワーク上でまだ割り当てられていない、未使用のIPアドレス
>
>
> 前者だとしたら、単純に For ループ等で書き出せば良いと思います。
> 後者であれば、ping && arp などを使うことを検討してみてください。
引用返信 編集キー/
■87189 / inTopicNo.9)  Re[4]: マスク長から使用できるIPアドレスの列挙
□投稿者/ 魔界の仮面弁士 (1653回)-(2018/04/20(Fri) 15:09:32)
No87187 (らら さん) に返信
> 192.168.0.0 ← ホストアドレスをビット化 "11000000110000001100000011000000"

Dim ip As IPAddress
Dim s As String = "192.168.0.0"
If IPAddress.TryParse(s, ip) AndAlso ip.AddressFamily = AddressFamily.InterNetwork Then
 Dim bits As Long = ip.Address

End If

これにより、bits には
 10進数 43200
 16進数 &H0000A8C0
が入ります。

> この文字列にどうやって1bitずつたしていけばいいんだろう・・・って感じなのです。
数値を +1 する。
引用返信 編集キー/
■87190 / inTopicNo.10)  Re[5]: マスク長から使用できるIPアドレスの列挙
□投稿者/ rara (2回)-(2018/04/20(Fri) 15:20:26)
No87189 (魔界の仮面弁士 さん) に返信

> ■No87187 (らら さん) に返信
>>192.168.0.0 ← ホストアドレスをビット化 "11000000110000001100000011000000"
>
> Dim ip As IPAddress
> Dim s As String = "192.168.0.0"
> If IPAddress.TryParse(s, ip) AndAlso ip.AddressFamily = AddressFamily.InterNetwork Then
>  Dim bits As Long = ip.Address
>
> End If
>
> これにより、bits には
>  10進数 43200
>  16進数 &H0000A8C0
> が入ります。
>
>>この文字列にどうやって1bitずつたしていけばいいんだろう・・・って感じなのです。
> 数値を +1 する。


ありがとうございます。 一度やってみます。
引用返信 編集キー/
■87292 / inTopicNo.11)  Re[5]: マスク長から使用できるIPアドレスの列挙
□投稿者/ rara (4回)-(2018/05/07(Mon) 10:51:15)
みなさんありがとうございました 無事に解決できました。


No87188 (らら さん) に返信
>
> (1) サブネットマスクで指定された範囲のアドレスの一覧になります。
>
>
> ■No87184 (魔界の仮面弁士 さん) に返信
>>■No87183 (らら さん) に返信
> >>192.168.0.1 〜 192.168.0.254 をすべての書き出したいのです。
> >>/24とかならいいのですが /16と/12等になったときにどうしようって感じなのです。
>>
>>「使用できるIPアドレス」というのは、下記のどちらの意味でしょうか?
>>
>>(1) サブネットマスクで指定された範囲のアドレスの一覧
>>(2) 上記のうち、ネットワーク上でまだ割り当てられていない、未使用のIPアドレス
>>
>>
>>前者だとしたら、単純に For ループ等で書き出せば良いと思います。
>>後者であれば、ping && arp などを使うことを検討してみてください。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ