Как я могу получить только компьютеры в локальной сети на основе диапазона IP-адресов? - PullRequest
0 голосов
/ 04 марта 2011

Я пишу программу C # Winforms, чтобы получить все компьютеры, подключенные к моей локальной сети, в зависимости от заданного диапазона IP-адресов.

Я использую класс Ping для идентификации компьютеров. Но проблема в том, что я получаю ответы от всех устройств, таких как (принтер, IP-телефон и т. Д.), Которые подключены к локальной сети.

Пожалуйста, помогите мне в фильтрации этих устройств и получить только компьютеры из локальной сети.

Ответы [ 2 ]

3 голосов
/ 04 марта 2011

С помощью PING невозможно определить, является ли сетевой узел компьютером / принтером / IP-телефоном и т. Д.

Вам потребуется использовать протокол более высокого уровня, такой как NETBIOS или DNS, чтобы решить эту проблему, но это очень сильно зависит от того, как реализованы устройства.

0 голосов
/ 04 марта 2011

Что ж, есть вероятность, что в принтере, телефоне и т. Д. Есть компьютеры общего назначения, на которых работает стек TCP / IP и какое-то специализированное серверное программное обеспечение, так что все сводится к тому, что вы определяете как "компьютер". Тем не менее, это звучит как большая проблема, чем оно того стоит, если только вы не можете определить то, что будет иметь только то, о чем вы думаете, как о компьютерах, и что все они будут иметь. В сети Windows, возможно, SMB - но это может поймать NAS, который предоставляет хранилище через SMB.

Я не думаю, что есть общий способ сделать то, что вы хотите сделать. Как указывал Ллойд, nmap производит дактилоскопию, но это далеко от совершенства (обычно она довольно близко подходит к конкретной версии ОС, но не может определить, какое физическое устройство работает на этой ОС).

...