Предположим, что Java имеет два типа сокетов:
- серверные сокеты "ServerSocket"
- клиентские сокеты или просто "Socket"
Представьте себе ситуацию двух процессов:
X = Клиент
Y = Сервер
Серверный процесс Y: имеет "ServerSocket", который слушает TCP-порт
Клиентский процесс X: отправляет запрос соединения через "Socket" на Y.
Y: Затем метод accept()
возвращает новый тип клиента "Socket" ,
когда это происходит, два сокета получаются "взаимосвязанными",
Итак: сокет в клиентском процессе связан с сокетом в серверном процессе.
Затем: чтение/запись через сокет X похоже на чтение/запись через сокет Y.
Теперь два клиентских сокета взаимосвязаны!
Но...
Что делать, если я создаю два сокета клиента в одном процессе,
и я хочу, чтобы они были "взаимосвязаны"?
... даже возможно?
Скажите, как подключить два клиентских сокета, не используя промежуточную ServerSocket?
Я решил это, создав две Threads для непрерывного чтения A и записи B,
и другие для чтения B и написания A...
Но я думаю, что это лучший способ...
(Эти потоки потребления энергии, потребляющие энергию, не требуются при использовании подхода клиент-сервер)
Любая помощь или совет будут оценены! Благодаря
Edit:
Пример приложения: "существующее серверное приложение может быть преобразовано в клиентское", Например, VNC-сервер, один клиентский сокет подключается к VNC-серверу, а другой клиентский сокет создается (для подключения к среднему серверу), тогда приложение соединяет два клиента, в результате чего VNC-сервер является клиентским приложением! И тогда не требуется публичный IP-адрес.
VNCServer --- MyApp --- > | средний сервер | < --- пользователя