Как соединить двух клиентов с сервера - PullRequest
2 голосов
/ 18 октября 2011

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

  1. Как я могу передать сообщение от одного клиента всем остальным?
  2. Как я могу соединить двух клиентов.Отправить и получить сообщение друг другу?

Ответы [ 4 ]

2 голосов
/ 18 октября 2011

Вы можете заставить своих клиентов общаться через простые розетки.Как только сервер отправляет IP-адрес клиентов, вы можете использовать IP-адрес и TCP-порт клиента (обычно 443) для связи.Я знаю, что в С это сделано таким образом, я не уверен, что вы можете использовать это в своей реализации Java, но что-то подобное будет работать.ваши клиенты.

1 голос
/ 18 октября 2011

В этом случае вы должны использовать концепцию многопоточности. Я думаю, что эта ссылка будет полезна. http://pirate.shu.edu/~wachsmut/Teaching/CSAS2214/Virtual/Lectures/chat-client-server.html

1 голос
/ 18 октября 2011

1.Как я могу передать сообщение от одного клиента всем остальным?

Использовать механизм подписки / уведомления

2.Как можноЯ пара двух клиентов.Отправить и получить сообщение eachother?

Клиенты также должны прослушивать сокет сервера.

ОБНОВЛЕНИЕ:
Ваш сервер будет иметь своего рода реестр, в котором все ваши клиенты регистрируются для уведомлений.
Клиенты открывают сокет сервера, который ожидает сообщений.
Когда клиент хочет отправить сообщение, он подключается к серверу, отправляет сообщение, и сервер может отправить сообщение всем зарегистрированным клиентам или конкретному клиенту, который должен получить сообщение. В этой части сервер подключается ксокет сервера клиента и отправляет сообщение.
Другой вариант - не открывать сокет сервера на клиенте, но клиент выполняет опрос, чтобы узнать, есть ли на сервере сообщение

0 голосов
/ 18 октября 2011
  1. Создать поток, который будет обрабатывать ServerSocket для принятия соединения.
  2. Заставить клиентов отправлять уникальный идентификатор на сервер при подключение.
  3. Когда клиент отправляет сообщение, используйте идентификатор нужного получателя. client в качестве параметра или пусто, поэтому отправьте всем клиентам.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...