Вам необходимо отправить запрос с того же IP-адреса, порта на сервере, на котором он был получен, и на тот же общедоступный c видимый IP-адрес, порт на клиенте, с которого вы получили данные. В противном случае NAT не сможет преобразовать IP-адрес и порт в пакете обратно исходному клиенту за NAT.
Вы можете выполнить это требование, используя один сокет сервера, который связан с IP-адресами серверов и порт и не подключен к указанному c клиенту. Затем используйте recvfrom
для получения данных и sendto
для отправки, используя адрес, возвращенный recvfrom
в качестве цели в sendto
.