savax
@savax
Web (Full Stack), Android Developer

Какой протокол лучше выбрать в этой ситуации?

Пишу программу "удалённое управление компьютерным классом". Компьютеров в сети может быть от 1-200. При запуске сервера он отсылает по UDP протоколу сообщение на заданный диапазон IP. Далее есть проблема, не могу определиться что мне лучше подойдёт.

Есть два развития событий:
1) Клиенты получают сообщение и подключаются по TCP к серверу.
плюсы: можно быстро узнать кто отключился, проще общаться с клиентами.
минусы: боюсь что из-за большого количество клиентов будет всё тормозить.

2) Клиенты получают сообщение и отсылаю по UDP протоколу серверу сообщение о своём существовании. А если уже дело пойдёт к управлению клиентом, то сервер отправляет запрос по UDP и происходит соединение по TCP.
плюсы: меньше употребляется ресурсов
минусы: через определённый промежуток времени придётся синхронизироваться с сервером для проверки клиент в сети или нет. что может тоже занимать некоторые ресурсы.

Я лично склоняюсь ко второму варианту, но может, я и не прав. Что посоветуете?
  • Вопрос задан
  • 2732 просмотра
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
У меня используется первый подход, но с небольшими изменениями.
- Сервер раз в 30 секунд рассылает мультикаcт сообщение по UDP, в котором есть UUID сервера и его IP.
- Сервер каждый раз генерирует новый UUID при старте.
- Клиент запоминает UUID, и если он изменился (сервер перезагружен), то переподключается к серверу по TCP.

Клиенты у меня set-top-box-ы в количестве до 10000 штук. Простой комп на интел-атом тянет 100-300 клиентов (больше просто к атому не подключал) без каких либо проблем, загрузка CPU около нуля, так как клиенты просто устанавливают соединения и ждут команд. Для больших инсталляций покупаем заказчику сразу сервер с iCore или Xeon, эти тянут гораздо больше.

Все ПО сервера написано на python, сам сервер реализован на twisted + cyclone. Клиенты - javascript :-) и делфи :-) и питон.
Ответ написан
Второй подход лучше, т.к. на этапе подключения недоставленный пакет ничем не пугает. В то время, как во время управления от этого лучше избавиться, и использовать TCP.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы