Обнаружение компьютеров в локальной сети с определенным открытым портом с помощью .NET - PullRequest
4 голосов
/ 04 февраля 2010

Мне нужно «обнаружить» локальные компьютеры, на которых запущена моя служба Windows WCF, чтобы я мог общаться с ними. Прямо сейчас вы должны вручную ввести комбинацию ipaddress: порт, но я хотел бы иметь (веб?) Приложение, которое отслеживает машины, на которых запущен сервис, и сообщает о них.

Когда я пытаюсь подключиться к неверному ip / порту, время ожидания истекает «навсегда», поэтому невозможно проверить все ip в моей локальной сети. Есть ли быстрый способ узнать, на каких машинах открыт порт (у всех есть отверстие в брандмауэре для этого конкретного порта)

ТИА

Ответы [ 3 ]

4 голосов
/ 04 февраля 2010

Я делал это несколько раз. Просто установите значение тайм-аута очень низким.

ALso, если это реальная машина, но без открытого порта, она все равно быстро выйдет из строя. Если вы выполняете сканирование подсети, тогда да, вам нужно (скажем) 1 секунда тайм-аута.

Многопоточность - это забавная вещь для кодирования

редактировать: я не могу найти свой код. вот ссылка на решение от кого-то другого

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/c8161442-61b5-4840-999b-5bb36bda0b6d/

1 голос
/ 04 февраля 2010

Почему бы не заставить их использовать многоадресную рассылку для передачи пакета HELLO так часто. Конечно, это предполагает, что многоадресная рассылка доступна в вашем сценарии, а вы не общаетесь между доменами маршрутизации. Просто используйте содержимое пакета «HELLO», такое как адрес одноадресной рассылки ipv4, чтобы убедиться, что вы знаете, с чем вам следует разговаривать. Конечно, вам не нужно использовать многоадресную рассылку, вы можете просто отправить широковещательную рассылку на номер 255.255.255.255, которая не является сложной задачей, а затем прослушать эти сообщения. Преимущество этого заключается в том, что вы также можете включить согласование порта. Например, если ваше приложение обычно связывается с портом, но этот порт недоступен, оно может автоматически выбрать порт и сообщить вам, к какому порту оно привязано. Избегает ручного обслуживания конфигурации и головной боли. Черт, он может даже использовать широковещательную рассылку, чтобы отправить сообщение и проверить, получило ли оно его. Если это не так, отключите оповещение, сообщив системному администратору. Я использую что-то в этом духе для управления тестовыми привязками для программных переключателей (голос), и это работает очень хорошо. Конечно, я мог бы быть очень взволнован этим. Просто размышляю здесь.

1 голос
/ 04 февраля 2010

Не могли бы вы настроить клиент для связи с веб-приложением и сообщить, где он работает, с помощью службы wcf?

, что потребовало бы, чтобы веб-приложение работало на известной машине, которая не изменяется.

...