Как отправить данные всем многопоточным клиентам на Java? - PullRequest
1 голос
/ 02 апреля 2012

Я довольно новичок в Java и пытаюсь создать очень простой сервер Java Relay, который отправляет сообщения от клиентов всем подключенным клиентам. Я выяснил, как сделать многопоточность, чтобы разрешить несколько соединений, но у меня возникли проблемы с выяснением, как отобразить входящее сообщение для ВСЕХ подключенных потоков сокетов.

Вот мой источник Main.java:

http://pastebin.com/vVewfv3s

Вот мой источник SocketThread.java:

http://pastebin.com/yHA2BcUi

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

1 Ответ

1 голос
/ 02 апреля 2012

Один из тривиальных способов - сохранить коллекцию клиентов, скажем, в виде карты или набора. Чтобы отправить сообщение всем клиентам, вы просматриваете связанный список клиентов и помещаете ссылку на сообщение в очередь отправки каждого клиента. Конечно, вам необходимо защитить эти структуры с помощью правильной синхронизации между потоками.

...