如何从SimpleHTTP获取客户端IP

2024-05-09 01:07:01 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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'

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

谢谢!


Tags: 模块文件实例方法ip服务器client客户端
1条回答
网友
1楼 · 发布于 2024-05-09 01:07:01

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

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()

相关问题 更多 >

    热门问题