- - PR -
リモートコンピュータ名を取得する方法について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-02 09:13
ありゃりゃ、
れいさん フォローありがとうございます。 | ||||||||||||||||
|
投稿日時: 2007-08-02 10:09
みなさん、本当にたくさんのご返信、ありがとうございます。
未来が見えてきたように思います。 Dns.GetHostByAddressはBios名を返信してくれるんですね? 一度やってみたのですが、IPアドレスがそのまま返ってきたので、 無理だとおもっていました。 あまり自信はないですが、ちょっと調べて書いてみます。 あと、台数ですが、100台以上です。 このプログラムの目的は、IPアドレス枯渇状況を調査するのが目的です。 セグメントは100以上ありますので、とりあえず、2個ずつ(Cクラス)で、 254×2 =約500 ぐらいを単位に考えています。 (一台につき1秒ではかなり時間がかかりそうですね・・・) 定期的にPingを飛ばし、通ったものについては、コンピュータ名を取得する。。。 そうして、現状のIPアドレス枯渇状況を調査したいと考えています。 同期/非同期という言葉をときとき、目にします。 Dns.GetHostByAddressの場合、非同期にするのはどうすればいいんでしょうか? | ||||||||||||||||
|
投稿日時: 2007-08-02 10:50
いいえ。BIOS名も返信してくれます。 HOSTS→DNS→netBIOSの優先順位で返したと思います。したがってもしもDNSに登録されているなら、DNS名を返すでしょう。
必ず取得できるわけではありません。Firewallが有効になっているだけで取得できません。したがって、netBIOS名を取得できるためには、クライアントの設定を事前に変更しておく必要があるでしょう。 ほとんどの場合は、ネットワーク経由でネットワークを構成する要素の調査を行うためには、ネットワークを構築する時点でそれらを考慮していなくてはできません。後から「できないかな?」といっても、ほとんどの場合はネットワークに参加している端末やネットワークの設定を変更する必要が出るものです。
それってpingに応答するように設定されていない端末は検出できないですよね。それでよいんですか?
非同期に呼び出す機能はありません。なので複数のスレッドで処理を平行して行うことになるかと。 | ||||||||||||||||
|
投稿日時: 2007-08-02 11:43
早速のご返信、まことにありがとうございます。
自分の無知さが恥ずかしいかぎりです。 HOSTS→DNS→netBIOSの優先順位とはしりませんでした。 助かります。 FWなどは考慮しています。 PingOK、NbtstaTでもPC名取得可能なPCにDns.GetHostByAddressをしたのですが、 取得できなかったのです・・。 もう一度試してみます!! PINGの返す設定等は考慮済みです。 できるかぎり徹底していますし、もし通らないもがあるとしても それは無視して考えます。 (そこまでの精度は求めないということですね) 一気に同じスレッドを立てるんですか・・・了解です。 その点も考慮し一度Dns.GetHostByAddressでプログラムを書いてみます。 本当にみなさん、ありがとうございました!!! | ||||||||||||||||
|
投稿日時: 2007-08-03 09:14
解決済みでしょうか?
ちょっと誤解があるようです。 正確にはこちらの名前解決のフロー(中間よりやや下)を参照して下さい。 | ||||||||||||||||
|
投稿日時: 2007-08-03 10:06
逆引きに関しては載ってませんね。 私の環境(Vista Ultimate)だと、 キャッシュしてるはずの状況でもNBNS投げるんですよね。 どうしてだろうなぁ。 | ||||||||||||||||
|
投稿日時: 2007-08-03 10:51
脊髄レスで変なこと書きましたか?
途中からの流れは読んでませんが、最後に優先順位の話題が出てたので一部 誤りかと思った部分を指摘させて頂きました。
質問はIPアドレスが判っている状況でそのホスト名が知りたいという内容です。 IPアドレスがわかっている場合、通信先のセグメントまではIPルーティングに よる通信が行われ、当該セグメント内ではARPからMACアドレスを知り通信が 行われます。 # 要するにDNSにあるような逆引きという概念はWindows上のIPアドレスを使用 # した通信にはありません。 通信の仕組みからは、最初の頃にJitta様が提示したping -aが最も妥当な方法 だと思います。 # .net系が判らないインフラ屋の意見ですが。 | ||||||||||||||||
|
投稿日時: 2007-08-03 11:13
NetBios名前解決で逆引きって言わないような気もしますね。 なんていうんだろう?
DNSホスト名でなく NetBios名を知りたいそうです。 IPアドレスから。
んーとすみません。 通信が行われることとホスト名を知ることの関連が よくわかりません。 (最近、理解力が落ちてる気がします。 通信したいのではなくて ただNetBios名を知りたいだけなのだと思いますが。 なので キャッシュを見るか、 IPにNBNSパケットを投げて返答をみるか、 WINSを使うか、 LMHOSTSを使うか、 4通りしか方法ないですよね。 ># .net系が判らないインフラ屋の意見ですが。 .net関係ないですよね。 むしろ.netは関係を切りたがっているというか…。 [ メッセージ編集済み 編集者: れい 編集日時 2007-08-03 11:19 ] |