使用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的方法。
谢谢!
答案 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()