ネットワーク内にあるデバイスを探すツールを作りたいと考えています。


Webカメラなどについていて、ネットワーク内の自社製カメラのIPアドレスを表示してくれるツールと同じようなことを実現したいです。

探したいデバイスは、自作または既製品です。

自分なりに考えると、ブロードキャストアドレスとかをうまく使うのかと思いますが、それをどうやってプログラムすれば実現するのか検討がつきません。

どなたかヒントでもいいのでアドバイスください。
言語はC#がベストですが、他の言語(Java、C、VB、Perl、Python、Ruby)でも構いません。

自作のデバイスは、WindowsXp上で動くWindowsサービスです。
このサービスに実装すべきもの(あるプロトコルに応答できるようにするとか)も提示してもらえると助かります。

回答の条件
  • 1人3回まで
  • 登録:2008/10/23 14:57:34
  • 終了:2008/10/30 15:00:03

回答(5件)

id:garyo No.1

garyo回答回数1782ベストアンサー獲得回数962008/10/23 15:11:31

ポイント15pt

SNMP(Simple Network Management Protocol)をキーワードに探すといいと思います。

@IT:監視を自動化するSNMP(1)

http://www.atmarkit.co.jp/fnetwork/rensai/snmp01/01.html

Rubyで超お手軽SNMP!

http://members.at.infoseek.co.jp/m6809/index-j.html

id:re_guzy

回答ありがとうございます。

SNMPはすでに使用してします。ただ、今回の目的はIPアドレスが不明なので、SNMPだとどうしようもないと判断しました。

説明が不足していました。すいません。

2008/10/23 15:17:08
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/10/23 15:32:55

ポイント29pt

指定したIP範囲に対し順次pingを発行し、ヒットしたIPに対しては問い合わせのプロトコル(SNMPが使えるならSNMPで)を出してみてはどうでしょう。


.NET Frameworkでしたら ping クラスが利用できると思います。


JavaやPHP、Rubyでは直接発行できないと思うので、ping コマンドを叩くのが無難でしょう。

id:re_guzy

回答ありがとうございます。

なるほど。pingですか。

とすると、同一セグメント内にデバイスが複数あれば、それだけ時間がかかるということですね・・・

もうちょっと効率のいい方法ってないんでしょうか?

2008/10/23 16:01:09
id:aki1960 No.3

aki1960回答回数256ベストアンサー獲得回数82008/10/23 15:46:35

ポイント14pt

既製品も対象とするなら、順次echo(ping)コマンドでスキャンでしょう。

以下のURLが参考になると思います。


http://itpro.nikkeibp.co.jp/article/COLUMN/20061108/253024/

http://kotohazime.fc2web.com/trouble/examination.html

id:re_guzy

回答ありがとうございます。

2番目の方と同じ手法ですね。やはりそれしかないんですかね・・・

2008/10/24 09:12:17
id:zzz_1980 No.4

zzz_1980回答回数492ベストアンサー獲得回数642008/10/23 18:55:37

ポイント14pt

既成のものに対しては適用できなくなりますが、

IPレイヤではなくデータリンクレイヤ(DIXv2/802.3)でのブロードキャストパケットを

raw socket (SOCK_RAW)上でやりとりすることを考えてください。

ゴミパケットを撒き散らかさないように。

id:re_guzy

回答ありがとうございます。

ただ・・・使われている用語(データリンクレイヤ、raw socket)がわかりません・・・

意味はネットで調べるとしても、それをどうやってプログラムするのでしょうか?

できればそのあたりのヒントをおねがいします。

2008/10/24 09:06:36
id:zzz_1980 No.5

zzz_1980回答回数492ベストアンサー獲得回数642008/10/24 22:11:08

ポイント28pt

socket インターフェース (API)はこちら。

http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socke...

raw socket を使ったプログラミング(に必要な知識)は、

UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI

UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI

  • 作者: W.リチャード スティーヴンス
  • 出版社/メーカー: ピアソンエデュケーション
  • メディア: 単行本

こちらを。

  • id:dev_zer0
    ICMP(pingが使っているプロトコル)を自力で実装するとか?
    http://ja.wikipedia.org/wiki/Internet_Control_Message_Protocol
  • id:zzz_1980
    raw socket は vista では使えなくなったらしいです。(XPだから大丈夫かな)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません