如何从 SimpleHTTPServer 获取客户端 IP

How to get client IP from SimpleHTTPServer

使用 Python 中的 SimpleHTTPServer 模块构建一个简单的文件服务器,但是我 运行 在尝试从连接的客户端获取 IP 时遇到了问题。这是我的..

import SimpleHTTPServer

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", 8080), Handler)

print "Serving local directory"

while True:
    httpd.handle_request()
    print Handler.client_address[0]

当客户端连接时,我得到..

AttributeError: class SimpleHTTPRequestHandler has no attribute 'client_address'

我知道这是因为我还没有实例化 class,但是有没有另一种方法可以从客户端获取 IP 而不必创建处理程序实例?建立连接后,客户端的 IP 会输出到控制台,我只需要一种在我的脚本中获取该 IP 的方法。

谢谢!

确实,Handler class 对象与特定实例无关。设置您自己的处理程序 class,如下所示:

import SimpleHTTPServer
import SocketServer


class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def handle_one_request(self):
        print(self.client_address[0])
        return SimpleHTTPServer.SimpleHTTPRequestHandler.handle_one_request(self)

print("Serving local directory")
httpd = SocketServer.TCPServer(("", 8080), MyHandler)

while True:
    httpd.handle_request()