如何从SimpleHTTPServer获取客户端IP

时间:2016-05-05 15:56:30

标签: python http ip simplehttpserver fileserver

使用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没有属性'client_address'

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

谢谢!

1 个答案:

答案 0 :(得分:3)

实际上,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()