首页 > 解决方案 > 用http.server如何访问被调用的IP地址?

问题描述

这一定很简单,但在文档中找不到任何参考,谷歌也没有帮助。在下面的例子中

from http.server import BaseHTTPRequestHandler, HTTPServer

PORT_NUMBER = 80

class myHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        print(self.path)   # <<<<<<<< Here
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write(bytes("Hello world", "utf8"))

server = HTTPServer(('', PORT_NUMBER), myHandler)
server.serve_forever()

如果我的机器有多个接口,绑定是用 0.0.0.0 完成的。如何在请求处理程序上检索收到套接字连接的 IP?

标签: python-3.xhttp

解决方案


在 的do_*实例的方法中BaseHTTPRequestHandlerself.requestsocket.socket与请求关联的对象。您可以使用 获取套接字的服务器端self.request.getsockname(),这将为您提供客户端连接的服务器 IP 和端口的元组。因此 IP 地址将是:

self.request.getsockname()[0]

推荐阅读