Подключение к нескольким серверам с одного клиента - PullRequest
2 голосов
/ 14 октября 2011

У меня 10.000 маленьких устройств, и у них один порт сервера (ожидающее соединение).Я хочу подключить все устройства одновременно с одним сервером (ПК).Могу ли я открыть порт для каждого устройства?Возможно ли это для Windows?Thnx

Ответы [ 3 ]

1 голос
/ 14 октября 2011

Прочтите раздел 4.8 на этой странице . Похоже, что ответ в принципе да, но вам нужно выполнить асинхронный ввод-вывод, потому что вы не можете одновременно запускать 10000 потоков в Windows.

0 голосов
/ 15 октября 2011

Способ сделать это - заставить устройства прослушивать определенную группу многоадресной рассылки.Таким образом, вы можете просто передать пакет, и машины, прослушивающие эту группу, (скорее всего) получат пакет.

Это также дает много преимуществ разделения вещей на группы с использованием многоадресных адресов.

Обратите внимание, что существует вероятность потери пакетов - поэтому я предлагаю метод нумерации последовательностей / восстановления, если каждое отдельное сообщение важно.

0 голосов
/ 15 октября 2011

Пока вы использовали достаточно эффективную стратегию опроса (например, порты завершения ввода / вывода, если вы используете Windows) и держите буферы сокета ядра достаточно маленькими, это в принципе возможно. Однако, если надежность не является большой проблемой, и вы можете контролировать оба конца протокола (т. Е. Разрабатываете устройства), UDP был бы гораздо более эффективным - с UDP вы могли бы читать со всех устройств, используя один сокет.

Если требуется протокол TCP, у вас будет абсолютный предел в 60000 подключений от одного интерфейса, поскольку номера портов TCP составляют всего 16 бит, т. Е. 64 тыс. Возможных значений. В конце концов у вас закончатся номера локальных портов, если вы не сделаете что-то экзотическое, например, предоставите вашему сетевому интерфейсу более одного IP-адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...