指定された IP アドレス範囲に基づいて、LAN に接続されているすべてのコンピューターを取得する C# Winforms プログラムを作成しています。
Ping
クラスを使用してコンピューターを識別しています。しかし、ここでの問題は、LAN に接続されているすべてのデバイス (プリンター、IP 電話など) から応答を得ていることです。
これらのデバイスをフィルタリングして、LAN からコンピュータのみを取得するのを手伝ってください。
ネットワーク ノードがコンピュータ/プリンタ/IP 電話などであるかどうかを PING を使用して判断することは不可能です。
これを解決するには、NETBIOS や DNS などのより高いレベルのプロトコルを使用する必要がありますが、デバイスの実装方法に大きく依存します。
プリンターや電話などには、TCP/IP スタックといくつかの特殊なサーバー ソフトウェアを実行する汎用コンピューターが搭載されている可能性があります。あなたがコンピューターだと思っているものだけが持っている何か、そしてすべてのコンピューターが持っているものを特定できない限り、それは価値があるよりも面倒なことのように思えます。Windows ネットワークでは、おそらく SMB ですが、SMB 経由でストレージを公開する NAS をキャッチする可能性があります。
あなたがやりたいことをするための一般的な方法はないと思います。Lloyd が指摘したように、nmap はいくつかのフィンガープリンティングを行いますが、それは完全にはほど遠いものです (通常、特定の OS バージョンにかなり近くなりますが、その OS を実行している物理デバイスの種類はわかりません)。