我曾阅读有关端口转换的内容,现在我想测试一下。
我有一台位于NAT路由器后面的本地机器和一台具有外部IP地址的服务器。
以下是我如何将来自我的机器上5000号端口的数据包发送到服务器上的4000号端口。
在服务器端,当我看到来自
此外,当服务器在本地网络中时,此代码可以正确工作。
我有一台位于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))
紧接着,我开始在本地机器上听第5000个。
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
在服务器端,当我看到来自
(someIP, somePort)
的UDP时,我会向相同的someIP
和somePort
发送响应(使用其他端口和地址的相同脚本)。但是我从未在我的本地机器上收到这个响应。为什么?此外,当服务器在本地网络中时,此代码可以正确工作。