MrPara
@MrPara

Как организовать взаимодействие клиентов напрямую в Java?

Всем привет!
Сейчас планирую написать небольшое многопользовательское приложение на Java, в учебных целях. Собственно, идея реализации такова:
  1. Пользователь №1 создаёт комнату. В это время на сервере сохраняются только информация о комнате и данные для прямого подключения к пользователю №1 (хосту), у которого теперь хранятся все те данные, которыми планируется обмениваться
  2. Пользователь №2, №3 и №4 отправляют запрос на сервер, чтобы получить список комнат, и затем подключаются к хосту
  3. Далее обмен данными происходит так: к примеру, пользователь №2 совершает некоторое действие, информация об этом отправляется хосту и сохраняется у него, а затем отправляется пользователям №3 и №4


Зачем так делать? Наверное, чтобы не размещать каждую комнату на сервере и не оплачивать её... Ну так вот, а каким образом это можно реализовать средствами Java? Какие именно данные нужны для соединения пользователей между собой? Возможно, есть какие-то серьезные нюансы? Быть может, я не вижу или не знаю чего-то очевидного? Хотелось бы получить некоторые советы по этим вопросам

P.S. Заранее спасибо за уделенное время :)
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
@none7
Сама реализация требует лишь понимания основ сетевого программирования(socket,bind,listen,connect java.net.*). А подводный камень весьма огромен. Клиенты в отличии от серверов как правило не имеют глобально-маршрутизируемых адресов(белых) или они закрыты фаерволом. Есть костыли вроде UPNP и NATPNP, но работают они далеко не всегда. Так же есть техника STUN(за счёт неё работает например torrent-utp), но и она будет работать всё реже и реже и в мобильных сетях не работает вообще(как в прочем и UPNP с NATPNP). С IPv6 отдельная головная боль, ведь тот адрес, с которого клиент подключился к серверу, может в скором времени стать недействительным. А неизменный адрес лучше не светить в интернете без разрешения пользователя.
Итого, такая архитектура может работать только в локальных сетях, так как современный Web очень не любит p2p.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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