我在树莓派上设置了一个python localhost来监听UDP数据包。但我想知道如何将其作为公共服务器以便从漫游设备发送UDP数据包。
以下代码可以完美地从同一无线网络上的设备发送UDP数据包。
import SocketServer
PORTNO = 14
class handler(SocketServer.DatagramRequestHandler):
def handle(self):
newmsg = self.rfile.readline().rstrip()
print (newmsg)
self.wfile.write(self.server.oldmsg)
self.server.oldmsg = newmsg
s = SocketServer.UDPServer(('',PORTNO), handler)
print "Awaiting UDP messages on port %d" % PORTNO
s.oldmsg = "This is the starting message."
s.serve_forever()
答案 0 :(得分:1)
这更像是一个网络问题。您必须使用适当的port forwarding配置路由器。如果您的ISP没有静态IP,您可能还需要设置一些dynamic DNS服务。
连接到外部网络所需的NAT遍历需要在192.168。。或10. 。。*范围之外的静态IP。这通常由ISP DHCP服务器分配给路由器的外部MAC地址。
端口转发设置如下所示: