Мне не слишком ясно, чего вы хотите достичь, но я постараюсь объяснить вам это.
Чтобы пройти через NAT, вы должны отправить дейтаграмму "изнутри" в"вне".Затем NAT сохраняет ассоциацию, и внешний тагет может ответить.
В только что протестированной реализации NAT отображает номер порта 1: 1 (полезно, поскольку номер порта может иметь значение в протоколе).
Тем не менее, как только вы отправили первую дейтаграмму или связались с нулевым адресом и нулевым портом, вы можете позвонить getsockadress()
и получить ваш реальный внутренний адрес и порт.
Ваш коммуникационный партнер должен использовать recvfrom()
для получения информации об источнике пакета.Там у вас есть «внешние» данные, где можно найти NAT.