【问题标题】:Build a server with BaseHTTPServer for public network?使用 BaseHTTPServer 为公共网络构建服务器?
【发布时间】:2014-12-30 15:29:32
【问题描述】:

尝试构建一个简单的服务器:

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
            self.send_response(200)
            self.send_header('Content-type',    'text/html')
            self.end_headers()

            self.wfile.write("It works!")

            return

        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)

try:
    server = HTTPServer(('localhost', 8080), MyHandler)
    print 'started httpserver...'
    server.serve_forever()
except KeyboardInterrupt:
    print '^C received, shutting down server'
    server.socket.close()

嗯,可以在127.0.0.1:8080上使用,但是现在我想通过my ip:8080这样的公共网络访问它,我该怎么办?

编辑HTTPServer(('0.0.0.0', 8080), MyHandler) 对我不起作用,知道为什么吗?

我正在使用 win 7 Ultimate 64 位,python 2.7.3

【问题讨论】:

    标签: python windows python-2.7 basehttpserver


    【解决方案1】:

    指定'0.0.0.0'''(空字符串)以使服务器接受来自任何地方的连接。

    server = HTTPServer(('0.0.0.0', 8080), MyHandler)
    

    地址('0.0.0.0', 8080) 被传递给socket.bind0.0.0.0 用于绑定到任何本地网络接口。

    【讨论】:

    • @Shane,你在 NAT 内部吗?如果是这样,您需要将路由器配置为进行端口转发。
    • @Shane,如果您在命令行中发出以下命令会得到什么:ipconfig | findstr IPv4
    • 这似乎是问题所在!我在路由器后面但没有管理员权限,有没有其他方法可以绕过它?
    • @Shane,如果你有一台具有公共 IP 的机器(在你的控制之下),你可以做隧道。
    • @Shane,顺便说一句,您应该能够使用内部 IP 访问您的机器(您可以使用 ipconfig ... 获得的 IP)
    猜你喜欢
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多