我读了一些关于port translation的内容,现在我想测试它。无法接收NAT数据包后面的UDP数据包
我有一台NAT路由器和一台带有外部IP地址的服务器的本地机器。
这就是我如何从我的机器上的第5000个端口发送数据包到服务器上的第4000个端口。
import socket
import sys
UDP_IP = #external server IP address
UDP_PORT = 4000
MESSAGE = "Hi!"
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind(('0.0.0.0', 5000))
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
权后,我开始本地机器
import socket
import sys
UDP_IP = #my ip address in the local network
UDP_PORT = 5000
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024)
print "received message:", data
在听第5000在服务器上,当我看到传入UDP从(someIP, somePort)
我发送响应相同someIP
和somePort
(使用相同的脚本与其他端口和地址)。但我从未在本地机器上收到过此回复。为什么?
此外,当服务器位于本地网络中时,此代码正确工作。
为什么你不使用相同的套接字? –