Можно ли найти порт прослушивания удаленного клиента, подключающегося к моему серверу? - PullRequest
0 голосов
/ 15 января 2019

Как только входящее TCP-соединение установлено, через java.net.Socket я могу найти порт прослушивания и порт, который был создан для этого соединения. Есть ли способ; когда клиент, подключенный ко мне, также является сервером, который прослушивает соединение; узнать, на каком порту слушает этот удаленный клиент / сервер?

Это похоже на неправильное использование сокетов. И в моем случае это идентификация клиент-серверных сущностей, составляющих наше приложение. Так что я мог бы отправить какое-то приветственное сообщение при установлении исходящего соединения для идентификации.
Но мне любопытно, возможно ли это или нет, и я не нашел ответа. Есть идеи?

1 Ответ

0 голосов
/ 15 января 2019

Когда клиент подключается к вашему серверу, он открывает порт для отправки данных клиенту. Это соединение автоматически подключается, так что запись в сокет с сервера отправит на правильный клиентский порт. Если вы хотите знать, что это такое Socket.getRemoteSocketAddress(), которое вернет SocketAddress, которое можно привести к InetSocketAddress, который имеет метод getPort().

Если на сервере открыт другой порт, который вы хотите использовать, вам придется отправить порт с клиента на сервер.

Например, если компьютер A работает и SSH-сервер подключен к порту 1234 и хочет сообщить компьютеру B, чтобы компьютер B мог подключиться по SSH к компьютеру A, а компьютер B прослушивал порт 1337, то компьютер A может подключиться к порт 1337 на компьютере B, отправьте что-то вроде «Я слушаю на 1234», который читается B, а затем может быть использован B для SSH в A.

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