Клиент-серверное приложение чата на Java - PullRequest
1 голос
/ 03 ноября 2011

В настоящее время я пытаюсь реализовать клиент-серверное приложение чата на Java. Суть этого проекта в том, что несколько клиентов должны иметь возможность подключаться к центральному серверу, через который общается каждый клиент. Это должно работать следующим образом:

Сервер запущен Количество клиентов запущено и «подключено» к серверу Клиент A отправляет сообщение на сервер, который передает его клиентам B, C и т. Д. Сервер остановлен, все соединения закрыты

Я возился с различными способами реализации этого и хотел бы дать несколько советов о том, является ли TCP или UDP лучшим протоколом для реализации связи между клиентом и сервером. Я рассматривал возможность использования UDP Multicast для связи между сервером и клиентом, но затем возникли проблемы с UDP-сокетами, используемыми для связи между клиентом и сервером. Имеет ли смысл использовать TCP для связи с сервером, а затем UDP Multicast? Или я должен отказаться от многоадресной рассылки и просто использовать дейтаграммы UDP со всех сторон, при этом сервер хранит коллекцию всех клиентов, от которых он получил сообщения, для моделирования "соединений".

1 Ответ

1 голос
/ 03 ноября 2011

Я бы порекомендовал вам использовать TCP.Это довольно просто, и вам не придется обрабатывать порядок пакетов, потерю пакетов и т. Д., Поскольку TCP уже сделает это за вас.Вы могли бы взглянуть на пакет java.nio, в котором есть некоторые функциональные возможности, которые могут пригодиться.

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

...