Задать вопрос
@snegirev_news

Можно ли в клиент-серверном приложении на клиенте подключиться к другому клиенту?

Суть вопроса вот в чем. Клиент подключается к серверу и сервер запоминает подключившегося клиента (объект типа сокет в List). Как мне организовать работу и что передавать обратно с сервера на клиент, если мне надо, чтобы передача именно данных происходила только между клиентами (в обход сервера)?!
  • Вопрос задан
  • 382 просмотра
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
soshnikov
@soshnikov
Каждый клиент должен реализовывать функции сервера, т.е. уметь принимать и обрабатывать входящие подключения. Основной сервер передает клиентам данные подключения других клиентов и они подключаются друг к другу напрямую.
Не будет работать, если клиент находится за натом и не настроен проброс необходимых портов.
Ответ написан
Комментировать
@bbkmzzzz
Клиент - часть клиент-серверного приложения, которое по умолчанию только подключается.
Сервер - только принимает подключения.
Что бы клиент мог принимать подключения, он должен быть еще и сервером. Таким образом он перестает быть чисто клиентом и становится гибридом.

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

архитектурные вопросы)
Ко всем сразу, кстати?
А если клиентов в сети 1000?
на каждом компьютере по 1000 активных подключений для одной программы?
Или клиент подключается по мере необходимости?
Тогда как быть с уже закрытым клиентом на той стороне?

Лучше для общей коммуникации использовать сервер, а соединение клиент-клиент использовать для передачи больших объемов данных, например файлов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы