1

私は、新しいマシンをセットアップするときに日常的に行わなければならない多くのことを自動化するための小さなアプリケーションを書いています。私は今セットアップするためになんと18の新しいボックスを持っているので、IPアドレスをより簡単に追加できるようにするこの小さな機能を追加する必要があります。

ブロック番号に基づいてサブネットを生成する私の機能は正常に機能しますが、192.168.1.10 / 29のようなものを入力して、5つのIPアドレスすべてをNICに追加できるようにしたいと思います。IPを追加するための私の機能は正常に機能しますが、私の質問は...

このように手動でコーディングする必要がありますか?(明らかに疑似コードであり、実用的な例ではありません)

int 29block = 5
int 28block = 12

for (i = 0; i<29block; i++)
{
     string ip = ipinputbox.text;
     ip = ip + 2 + i; // 2 being the value to compensate for gateway/etc.
     AddIpAddress(ip);
}

ここに画像の説明を入力してください

4

1 に答える 1

0

サブネットアドレスを解釈し、そのサブネットによって表されるアドレスの列挙可能なコレクションを返すことができるクラスを作成しました。したがって、たとえば、ipサブネットは、で表されるサブネット(マスク)に含まれる192.168.1.10/29(およびそれを含む)すべてのアドレスを返す必要があります。このサブネットには、に6つの有効なホストがあります。したがって、返されるリストは次のようになります。192.168.1.10/29255.255.255.248.9.14

192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14

これが私が使用しているサンプルコードです(LINQPadで):http://pastebin.com/d6EE2bpj、およびテストコードによって生成されたサンプル出力:

==192.168.1.10/29==
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
==72.26.196.160/29==
72.26.196.161
72.26.196.162
72.26.196.163
72.26.196.164
72.26.196.165
72.26.196.166

このコードは、サブネットサイズに基づいてオンザフライでビットマスクを生成するため、開始IPアドレスとサブネットサイズに対して完全に汎用的である必要があります。

于 2012-04-04T00:04:00.070 に答える