Необходимо подключиться между Java ServerSocket и Socket(клиент), работающими на 2 разных портах

Я пытаюсь подключиться между двумя разными машинами, используя Java Socket. Порты TCP на сокетах сервера и клиента отличаются, как показано ниже,

ServerSocket sourceSocket = new ServerSocket(8080, 10, InetAddress.getByName("192.168.1.2"));

На этой же машине я также запускаю клиентское гнездо

destSocket = new Socket(InetAddress.getByName("192.168.1.3"), 49984);

Можно ли отправлять / получать пакеты / данные между портом 8080 и 49984 в вышеуказанном случае между двумя разными машинами. Требуется ли для этого NAT?

1 ответ

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

Для отправки на другую машину (назовите ее машиной № 2) с машины #1 на машине № 2 должен быть открыт сокет (с помощью кода на другом компьютере), который готов принимать входящие данные из сокета на Машина № 1. Кроме того, клиентский сокет должен отправлять данные на правильный IP-адрес и порт - поэтому, когда вы открываете порт с помощью new Socket Вы определяете адрес сокета, но не куда он будет отправлять данные.

Таким образом, хотя эти команды более или менее правильны, одну нужно запустить на машине № 1, а другую - на машине № 2, чтобы передать данные между ними. Вы также должны убедиться, что клиент отправляет данные на адрес сервера, а не на себя - открытие порта не определяет, куда данные будут отправляться, только с.

Другие вопросы по тегам