我讀了一些關於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
(使用相同的腳本與其他端口和地址)。但我從未在本地機器上收到過此回覆。爲什麼?
此外,當服務器位於本地網絡中時,此代碼正確工作。
爲什麼你不使用相同的套接字? –