Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过NAT确定Python中的传出端口_Python_Sockets_Udp_Port_Nat - Fatal编程技术网

如何通过NAT确定Python中的传出端口

如何通过NAT确定Python中的传出端口,python,sockets,udp,port,nat,Python,Sockets,Udp,Port,Nat,我正在研究一种东西,它通过UDP将数据从一个程序发送到另一个程序的已知IP和端口。位于已知IP和端口的程序接收来自原始IP的消息,但由于NAT,端口变得模糊(类似于30129)。位于已知IP和端口的程序希望向查询程序发送确认和/或信息。它可以将其发送回原始IP和被遮挡的端口#。但是查询程序如何知道监视哪个端口以使其返回?或者,有没有一种方法(这是Python)可以说“通过端口3200发送到端口7000上的已知IP(1.2.3.4)?这样,已知IP/端口可以响应端口30129,但它会被重定向到32

我正在研究一种东西,它通过UDP将数据从一个程序发送到另一个程序的已知IP和端口。位于已知IP和端口的程序接收来自原始IP的消息,但由于NAT,端口变得模糊(类似于30129)。位于已知IP和端口的程序希望向查询程序发送确认和/或信息。它可以将其发送回原始IP和被遮挡的端口#。但是查询程序如何知道监视哪个端口以使其返回?或者,有没有一种方法(这是Python)可以说“通过端口3200发送到端口7000上的已知IP(1.2.3.4)?这样,已知IP/端口可以响应端口30129,但它会被重定向到3200,查询程序知道要监视它。欢迎任何帮助。不,TCP不是一个选项。

简单的答案是你不在乎“真实”(即:预演)端口是。只需回复nat查询并允许nat处理并传递结果。如果您必须知道源UDP端口,请将信息包含在UDP数据包中——但我强烈建议您不要这样做。

好的,我想出来了-诀窍是使用相同的sock对象来接收您过去发送的数据。至少在最初的实验,这似乎起到了作用。谢谢你的帮助。

也许我说错了。监视器(具有固定IP和已知端口的监视器)实际上响应nat生成的端口。我的问题是如何从另一端(原始查询端)获取答案。它向监视器发送了一条消息,监视器响应NAT端口,查询程序期望得到一个答案,但不知道它将进入哪个端口。或者有没有办法让它控制它在哪个端口上运行?