Я «программирую TCP-сокеты» и у меня есть несколько фундаментальных вопросов.
Когда я указываю IP-адрес и порт для TCP-клиента, я знаю, что IP-адрес принадлежит сетевому интерфейсу, а не фактическомукомпьютера в целом, и этот компьютер имеет несколько сетевых интерфейсов, включая внутренний обратный интерфейс локального хоста.
Принадлежит ли порт, указанный клиенту TCP, указанному интерфейсу?Как, например, могут ли быть два порта с одинаковым номером, но на двух разных интерфейсах?Как порт 5000 интерфейса A и порт 5000 обратной петли интерфейса?
Я спрашиваю об этом, потому что я пытаюсь создать клиент TCP, который будет подключаться через сокет к серверу TCP, работающему на виртуальном устройстве Android.TCP-клиент работает на компьютере A, а эмулятор Android работает на компьютере B.
Я просмотрел переадресацию портов для эмуляторов Android и узнал, что эмулятор работает за виртуальным маршрутизатором, и что мне нужно настроить порт.переадресация так, что соединения сокетов TCP могут маршрутизироваться от одного порта к другому, но в этих документах есть только инструкции о том, как перенести порт с интерфейса обратной связи (так называемого локального хоста), поэтому, очевидно, если я попытаюсь создатьсокета к интерфейсу, который не является интерфейсом обратной связи, я не получаю свой сокет TCP, перенаправленный на эмулятор, и мое соединение TCP не удается.
Поэтому мне интересно, есть ли у порта 5000 на интерфейсе обратной связи двоюродный братпорт 5000 на внешнем сетевом интерфейсе?
И мне интересно, могу ли я на каком-то низком уровне перенести порт с внешнего интерфейса 5000 на порт обратной связи, который затем будет перенаправлен на порт эмулятора
Возможно ли это?