Я пишу вам из-за новой проблемы, которую мне нужно решить, и теперь я слишком долго бьюсь головой о стену.
По сути, мне нужно создать приложение, которое может позаботиться о следующем:
Пользователь запускает приложение, которое отправляет широковещательную рассылку в подсеть и получает ответ всех серверов с указанием IP-адреса (и некоторой дополнительной информации). Затем пользователь может выбрать, к какому серверу он хочет подключиться.
Сделать это достаточно просто, с определением подсети и передачей по UDP, а затем с помощью другого серверного приложения, получающего его и отправляющего ответ. Проблема заключается в этих ограничениях, которые мне необходимо принять во внимание:
- Скорее всего, на серверах в сети будут также клиенты, что означает, что мы можем предположить, что приложение присутствует на всех машинах. На каждой машине должен быть запущен приемник, и каждая машина может запустить графический интерфейс для выбора сервера.
- Мне разрешено добавить только одно исключение в брандмауэр - исключение, которое обрабатывает как рассылку, так и прием, отправку ответов и получение ответов.
- Я должен добавить только одну службу Windows
- на сервере, слушатель должен работать как служба Windows, поэтому пользователь не заметит этого. Также пользователь не заметит, что ответ отправляется обратно клиенту.
- На клиентском компьютере пользователь может запустить приложение, которое уведомит приложение об отправке широковещательной рассылки и получит все ответы сервера, поэтому пользователь может выбрать один для подключения.
- Кроме того, что из приложения, которое пользователь запускает для выбора сервера, вообще не должно быть взаимодействия с пользователем. Даже не всплывающее окно, запрашивающее пользователя разрешить трафик через брандмауэр - все должно быть автоматически
- Он должен работать между Win XP, Win Vista и Win 7 и между ними.
Я не знаю, накладываю ли я слишком много ограничений на себя, но я очень надеюсь, что смогу подать заявку с этими требованиями.
У меня есть несколько идей - мне просто нужно выяснить, как это сделать:
- Должен ли я сделать все в одном приложении, которое я добавлю в список исключений брандмауэра, чтобы он позаботился о трафике как на сервере, так и на клиентских машинах?
- Должен ли я добавить пользовательское исключение в брандмауэр, разрешающее UDP-трафик на определенный порт, и затем иметь весь поток трафика через него?
- Есть ли третий и лучший вариант для управления этим?
- Служба работает на клиентских и серверных компьютерах. Но может ли он обо всем позаботиться обо мне - например, обрабатывать и отправлять / получать, и отвечать / отправлять? И есть ли способ извлечь информацию о серверах в сети из службы?
Я знаю, что это много, но я очень надеюсь, что вы сможете мне помочь.
дайте мне знать, если я не достаточно ясно, или если вам нужны дальнейшие объяснения.
Я пишу в C # .Net, и я могу использовать все, что я хочу, из .Net Framework. Как только у меня будет реализован этот функционал
Всего наилучшего
/ Саги