.net2005でLAN内のネットワークで有効なホストを列挙したい


TCP/IPでなくてはいけないわけではなく、Windowsネットワークが認識しているHOSTの列挙でも、Active Directoryを使用した方法でも結構です。
.net2005のクラスを使用して行うスマートな方法を教えてください。


ループでpingしていくしかないということがないことを祈っています。
いや、それしかないというのであればそういう回答でも。


元質問は↓ですが、聞き方が悪かったので個別課題ごとに聞いていくことにしてみました。
http://q.hatena.ne.jp/1183820118

回答の条件
  • 1人2回まで
  • 登録:2007/07/08 10:16:28
  • 終了:2007/07/12 08:45:48

ベストアンサー

id:cx20 No.1

cx20回答回数604ベストアンサー獲得回数1072007/07/12 07:18:05

ポイント100pt

> .net2005のクラスを使用して行うスマートな方法を教えてください。


.NET Framework を使用する場合は、


■ 同じLANのPC一覧、如何取得しますか? - Insider.NET

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35924&am...

System.DirectoryServices.DirectoryEntry
System.DirectoryServices.DirectorySearcher

あたりが、


API を使用する場合は、


■ C# - サーバをリストする方法

http://uchukamen.com/Programming/EnumServer/

・NetApi32 / NetServerEnum() API を使用する方法
・WNet / WNetEnumResource() API を使用する方法

あたりが参考になりそうです。


> やはりNetServerEnum() API を叩くのが早道でしょうかね。


用途にもよると思いますが、下記のサンプル(VB.NET)は DirectoryEntry/DirectorySearcher を使用して列挙しているようです。


■ LAN Messenger - The Code Project - VB.NET

http://www.codeproject.com/vb/net/MyLanApp.asp

id:memo77

ありがとうございます。

とりあえずディレクトリエントリを使う方法とUDPでメッセージをブロードキャストする方法で試行錯誤してみます。

2007/07/12 08:45:05

その他の回答(2件)

id:cx20 No.1

cx20回答回数604ベストアンサー獲得回数1072007/07/12 07:18:05ここでベストアンサー

ポイント100pt

> .net2005のクラスを使用して行うスマートな方法を教えてください。


.NET Framework を使用する場合は、


■ 同じLANのPC一覧、如何取得しますか? - Insider.NET

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35924&am...

System.DirectoryServices.DirectoryEntry
System.DirectoryServices.DirectorySearcher

あたりが、


API を使用する場合は、


■ C# - サーバをリストする方法

http://uchukamen.com/Programming/EnumServer/

・NetApi32 / NetServerEnum() API を使用する方法
・WNet / WNetEnumResource() API を使用する方法

あたりが参考になりそうです。


> やはりNetServerEnum() API を叩くのが早道でしょうかね。


用途にもよると思いますが、下記のサンプル(VB.NET)は DirectoryEntry/DirectorySearcher を使用して列挙しているようです。


■ LAN Messenger - The Code Project - VB.NET

http://www.codeproject.com/vb/net/MyLanApp.asp

id:memo77

ありがとうございます。

とりあえずディレクトリエントリを使う方法とUDPでメッセージをブロードキャストする方法で試行錯誤してみます。

2007/07/12 08:45:05
  • id:cx20
    試して無いので、とりあえずコメント欄にて失礼します。

    > .net2005のクラスを使用して行うスマートな方法を教えてください。

    .NET Framework を使用する場合は、

    ■ 同じLANのPC一覧、如何取得しますか? - Insider.NET
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35924&forum=7

    System.DirectoryServices.DirectoryEntry
    System.DirectoryServices.DirectorySearcher

    あたりが、

    API を使用する場合は、

    ■ C# - サーバをリストする方法
    http://uchukamen.com/Programming/EnumServer/

    ・NetApi32 / NetServerEnum() API を使用する方法
    ・WNet / WNetEnumResource() API を使用する方法

    あたりが参考になりそうです。

    また、VB 2005 だと My クラスに Ping 等の関数が用意されているようです。

    ■ 10 行でズバリ !! My クラスの利用 (VB)
    http://www.microsoft.com/japan/msdn/thisweek/300x10/phase3/MyClass/vb.aspx


    <関連情報>
    ■ .NET Framework 2.0 コア機能解説 ~ 第 8 回 ネットワーク機能の強化 ~
    http://www.microsoft.com/japan/msdn/netframework/skillup/core/article8.aspx
  • id:memo77
    ありがとうございます。遠慮せず回答にしてください。


    やはりNetServerEnum() API を叩くのが早道でしょうかね。
    現在DirectoryEntryからComputerの一覧を取得することまではできているので、まああとはping打ちまくればいいんですが、なんかスマートじゃないというか、もうちょっと効率のよい(ネットワークやクライアント負荷の少ない)方法がないのかなぁ、と思ってます。


    pingもただ飛ばせばいいんでしょうかね。結構戻ってくるのを待ったりもするので非同期で投げるとか、いろいろ考えなきゃいけないのかなぁ、とか。
    LAN内に1000台ぐらいあったりすると、1000*1000のリクエストって、ちょっとイヤな予感がしたりしてます。


    ネットワークから勉強しないと・・・
  • id:memo77
    まだ回答は募集中です。


    kawashima58さんの回答を開けていないのは、悪意を持って答えられる方のようなので無視することにしたためです。
  • id:memo77
    まだ回答は募集中です。


    minkpaさんの回答は開けないつもりです。

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

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

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

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