如何使UDP python localhost公开

时间:2013-05-17 05:08:11

标签: python udp public raspberry-pi socketserver

我在树莓派上设置了一个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()

1 个答案:

答案 0 :(得分:1)

这更像是一个网络问题。您必须使用适当的port forwarding配置路由器。如果您的ISP没有静态IP,您可能还需要设置一些dynamic DNS服务。

连接到外部网络所需的NAT遍历需要在192.168。或10. 。*范围之外的静态IP。这通常由ISP DHCP服务器分配给路由器的外部MAC地址。

端口转发设置如下所示: D_Link port forward