Java-сокеты, управляемые событиями - PullRequest
1 голос
/ 09 марта 2012

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

Каждый клиент должен получить данные, связанные с событием.

Мне просто нужно реализовать клиент ... то есть мне нужно подключиться к серверу и получить данные о событиях.

Я думал о том, чтобы сделать что-то вроде:

this.socket = new Socket(InetAddress.getByName(host),
this.socket.connect(socket.getLocalSocketAddress(), SOCKET_TIMEOUT);

И затем запустить поток, который получает InputStream сокета в цикле while.

Но я не знаю, является ли это лучшим способом реализации клиента, управляемого событиями, через сокет.

Это?

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

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

0 голосов
/ 09 марта 2012

Вам не обязательно нужен поток здесь, если клиент не должен реагировать на некоторые другие входные данные, такие как события GUI.

Затем, если вы говорите о TCP, читайте из сокета в цикле, буферизуяполученные данные, пока у вас не будет завершено приложение «событие», и вызовите ваше приложение «обработчик событий».Это так просто.

0 голосов
/ 09 марта 2012

Это часто делается путем создания отдельного потока для клиента, который непрерывно блокирует вызовы read () из потока - таким образом, как только данные становятся доступными, вызов read () разблокируется и может воздействовать на полученные данные.(«событие срабатывает»), затем он возвращается к блокировке в ожидании следующего события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...