Настройка многопоточных серверов - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь установить связь между двумя серверами. Я знаю, что мне нужно использовать потоки, но я не могу понять, как это настроить. Я просматривал многие вещи, которые обсуждают только взаимодействие клиент / сервер, когда сервер устанавливает ServerSocket на порт, а клиент подключается к этому порту и может отправлять сообщения на сервер через поток вывода.

В настоящее время у меня есть класс (Router, выступающий в роли сервера), который создает поток, и в методе run (), который у меня есть

socket = server.accept();
...
while(...)
   String line = streamIn.readUTF();
...

Далее в моем основном методе я спрашиваю ввод командной строки о том, к какому серверу он хочет подключиться, а затем берет введенный IP-адрес и порт и подключается. Я не знаю, как получить ввод и вывод с сервера в этом сценарии.

Есть ли лучший способ попытаться подключить два сервера?

Спасибо!

edit: все, что я пытаюсь сделать, это установить соединение сервер / сервер на одном компьютере. Я запустил программу на порту 6666, а затем запустил ту же программу на 7777. Я хочу иметь возможность соединить эти два, чтобы они могли общаться друг с другом.

1 Ответ

0 голосов
/ 23 января 2012

Позвольте мне начать со спины:

Есть ли лучший способ попытаться подключить два сервера?

Абсолютно.Самый простой путь - взять любую систему JMS, такую ​​как ActiveMQ , и использовать ее для решения вашей проблемы.Это решает для вас множество очень сложных проблем и делает вашу систему более надежной.(Кроме того, код, который вы не пишете, содержит намного меньше ошибок, чем код, который вы делаете.)

В качестве альтернативы, Java RMI является хорошим выбором для удаленного вызова методов, или вы можете выкопать MessagePack RPC или RPC на основе буферов протокола для реализации ваших операций.

Наконец, HTTP - отличный выбор для этого.Серьезно, есть так много отличных вариантов HTTP-клиентов и серверов, которые вы можете встроить в свое Java-приложение, и которые решат для вас многие из этих проблем.

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

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

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

В любом случае, мой вам совет: не пишите это самостоятельно.Используйте существующее решение.Больно будет намного меньше.

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