改良

まだ、arpingの件、弄ってます。実は。


仕事的にはま、とりあえず収まったので、


どちらかと言えば、自分で使えるようにする為のFixです。



まず。
複数IPアドレスにスキャンする時の動作を変更しました。

従来動作
(1)目的のIPアドレスにARPリクエストを投げる。
(2)ARPリプライを一定時間待って、受信した内容からテーブルを作成
(3)IPアドレスの重複検出等、もろもろの処理。
(4)次のIPアドレスが存在する場合、(1)からやり直し。

新動作
(1)ARPリプライパケットをひたすら受信バッファにため込む
(2)目的のIPアドレスにARPリクエストを投げる。
(3)次のIPアドレスが存在する場合、(2)を繰り返す。
(4)受信バッファからテーブルを作成。
(5)IPアドレスの重複検出等、もろもろの処理。


何が大きく変わったかと言えば、スキャン時間が短くなりました。
環境にもよりますが、254IP(/24セグメント)のスキャンを-t 0(送信間隔=0)で実行すると、6〜7秒でスキャンが終わります(PentiumM 1GHzで。 Core2Duo E6700では2〜3秒でした。。。)。取りこぼしの心配もありますので、それなりに間隔を設定したほうが良いのですが、とりあえず-t 100(送信間隔=100ミリ秒)で実行しても、それなり(1分〜2分)でスキャン出来るようになりました。


で、データの保持方法も色々変更が必要になりました。
元々線形リスト(配列)だったのですが、連結リストを結合して使用する事にしました。構造体.jpg

図解すると、こんな感じで受信したIPアドレスとMACアドレスの対を保存します。
ですので、メモリが許す限りIPアドレスもMACアドレスも保持できます。

細かいバグとか、言い出したらキリが無さそうなんですが・・・。。。


arping.20090302.exe.zip

段々と複雑化してきますね。
既にソースは1ファイルじゃ見通しが悪くなったので、複数ファイルになってます。
簡単ツールなんだけど、こり始めると(^^;


GUIも実装すれば、便利なんでしょうけど。なんせ、Visual Studio Express Editionですからね。。。