В настоящее время я пытаюсь реализовать клиент-серверное приложение чата на Java. Суть этого проекта в том, что несколько клиентов должны иметь возможность подключаться к центральному серверу, через который общается каждый клиент. Это должно работать следующим образом:
Сервер запущен
Количество клиентов запущено и «подключено» к серверу
Клиент A отправляет сообщение на сервер, который передает его клиентам B, C и т. Д.
Сервер остановлен, все соединения закрыты
Я возился с различными способами реализации этого и хотел бы дать несколько советов о том, является ли TCP или UDP лучшим протоколом для реализации связи между клиентом и сервером. Я рассматривал возможность использования UDP Multicast для связи между сервером и клиентом, но затем возникли проблемы с UDP-сокетами, используемыми для связи между клиентом и сервером. Имеет ли смысл использовать TCP для связи с сервером, а затем UDP Multicast? Или я должен отказаться от многоадресной рассылки и просто использовать дейтаграммы UDP со всех сторон, при этом сервер хранит коллекцию всех клиентов, от которых он получил сообщения, для моделирования "соединений".