2013-04-22 5 views
-1

Привет, Я ищу руководство для создания приложения чата с помощью сокета, что позволяет клиентам создавать комнаты для других клиентов, чтобы присоединиться и пообщаться. У меня есть приложение чата, которое работает, и клиенты могут присоединиться, однако клиенты находятся в одной комнате и не могут передвигаться в другие комнаты. Я создал аналогичное приложение с несколькими комнатами, используя rmi, пользователь может добавлять комнаты для других клиентов, чтобы присоединиться и пообщаться. На этот раз я хочу практиковать использование сокета. Любая помощь или руководство, чтобы начать меня, было бы замечательно.Java socket Приложение чата

+2

Мы не запустим вас, это не цель этого сайта (поиск по этим вопросам и использование Google для этого). Но если у вас есть проблема, мы поможем ее решить. –

+0

Извините. Я не прошу ввести коды. Думаю, мне нужно переписать то, что я имел в виду. Я создал приложение с несколькими чатами, которое принимает многократные клиенты, но я не хочу, чтобы сервер позволял клиентам создавать комнаты. Прямо сейчас все мое приложение чата сокета просто добавляет клиентов на сервер ArrayList и обновляет всех клиентов, когда приходит сообщение. Я думаю, что мой вопрос будет таким: как сервер не будет, если клиент хочет создать или присоединиться к комнате? – user629283

+0

Определите и примените для этого собственный протокол. –

ответ

2

Насколько я могу работать, вы хотите

  • подключается через простой IO Sockets и, возможно, блокируя NIO с одним читателем резьбой на гнездо.
    • Я предлагаю вам иметь класс обработчика, который обертывает каждый сокет.
  • использовать текстовый протокол.
    • Вам нужна команда, чтобы добавить в комнату, удалить из комнаты, получить список текущих номеров и отправить сообщение.
  • позволяет одному клиенту подписаться/слушать/появляется в нескольких комнатах одновременно
    • это означает, что вам нужен набор обработчиков в каждой комнате.
  • Вы хотите обрабатывать медленных потребителей и разъединяться изящно.
+0

1-й пункт: я не слишком уверен, что вы имеете в виду, извините, но это звучит правильно для меня. 2-й пункт: Я думал об этом, но не мог понять, как я мог это сделать. Что я сейчас буду пытаться играть с этим. 3-й пункт: да, это правильно. 4-я точка: это то, что я хочу сделать правильно :). 5th: Я понимаю, что значит. – user629283

+0

Я не знаю, чего вы не знаете. ;) Задайте мне вопрос, если хотите. –

+0

жаль, что я нажимаю ввод слишком рано – user629283

0

Для осуществления коммуникации layeryou следует взглянуть на netty или apache mina. Оба соответствуют вашим потребностям на стороне клиента и сервера. Я думаю, у них уже есть образец протокола чата.

+0

Спасибо, я буду прочитан об этом, но я просто думал об использовании только сокетов и серверных сокетов. В любом случае, спасибо. – user629283

+0

Оба фреймворка используют nio-сокеты и обеспечивают абстракцию низкоуровневого материала, поэтому можно сосредоточиться на протоколе. – Chriss

Смежные вопросы