Можно ли разместить несколько компонентов ClientSocket в форме?

Я ищу написать программу, которая будет подключаться ко многим компьютерам с одного компьютера. Вроде как "Командный центр", где вы можете удаленно контролировать всю удаленную систему на одном ПК.

Мой план состоит в том, чтобы в форме было несколько клиентских сокетов. Они будут подключаться к отдельным компьютерам удаленно. Таким образом, они могут запросить информацию у них для отображения в окне. Удаленные ПК будут хостами. Это возможно?

3 ответа

Решение

Прямой ответ на ваш вопрос: да, вы можете сделать это.

Длинный ответ: Да, вы можете сделать это, но вы уверены, что ваш дизайн правильный? Вы уверены, что хотите создать параллельные соединения, по одному для каждого клиента? Наверное, нет! Если да, то вы, вероятно, хотите запустить их в отдельных потоках.

Если вы хотите время от времени посылать некоторые команды (и вы не проводите какой-то постоянный видеомониторинг), почему бы вам просто не использовать одно соединение и "переключаться" между клиентами?

Я не могу рассказать вам больше о дизайне, потому что из вашего вопроса непонятно, что вы хотите построить (что именно вы "отслеживаете").

ОЧЕНЬ ВАЖНО!

Два важных замечания, которые следует учитывать перед разработкой приложения (оба имеют значение только в том случае, если удаленные компьютеры не находятся в локальной сети (вы подключаетесь к ним через Интернет)):

  1. Если удаленные компьютеры работают как серверы, у вас будет много проблем, чтобы объяснить вашим клиентам (если они подключены (и, вероятно, они есть)) к Интернету через маршрутизатор), как настроить маршрутизатор и программный брандмауэр. Например, если удаленный компьютер прослушивает команды от вас, на порту 1234 (например) брандмауэр в маршрутизаторе заблокирует ПО ПО УМОЛЧАНИЮ любую попытку подключения "чужого" компьютера (от вас) к этому порту.
  2. Если ваши удаленные компьютеры работают как клиенты, как они узнают IP-адрес мастера (ваш IP). У вас есть статический IP?

Что вам действительно нужно, так это один ServerSocket на модуле, работающем на вашей машине. К которому все ваши удаленные ПК будут подключаться через свой индивидуальный ClientSocket.

Вы можете сделать свой дизайн иначе, поместив ClientSocket на модуль, работающий на вашей машине, и ServerSocket на модуль, работающий на удаленной машине.

Но в итоге вы создадите один ClientSocket для каждого ServerSocket, что, если у вас увеличится количество удаленных серверов.

Теперь, если вы все еще хотите иметь несколько ClientSockets на вашем компьютере, тогда, как сказал Altar, вам может потребоваться многопоточное приложение, где каждый поток отвечает за один ClientSocket.

Я бы порекомендовал Internet Direct (Indy), так как они хорошо работают в потоках, и вы можете указать время ожидания подключения для каждого подключения, чтобы ваше приложение для мониторинга могло получить отрицательный результат теста быстрее, чем при подключении ОС по умолчанию. тайм-аут.

Вместо того, чтобы помещать их в форму, я бы обернул каждого клиента в класс, который запускает внутренний поток мониторинга. Сначала нужно больше работать, но легче оставаться независимым друг от друга.

Другие вопросы по тегам