网页静态服务器-3-使用类
来源:互联网 发布:淘宝墙贴 编辑:程序博客网 时间:2024/06/06 16:37
#coding=utf-8import socketimport sysfrom multiprocessing import Processimport reclass WSGIServer(object): addressFamily = socket.AF_INET socketType = socket.SOCK_STREAM requestQueueSize = 5 def __init__(self, server_address): #创建一个tcp套接字 self.listenSocket = socket.socket(self.addressFamily,self.socketType) #允许重复使用上次的套接字绑定的port self.listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #绑定 self.listenSocket.bind(server_address) #变为被动,并制定队列的长度 self.listenSocket.listen(self.requestQueueSize) def serveForever(self): '循环运行web服务器,等待客户端的链接并为客户端服务' while True: #等待新客户端到来 self.clientSocket, client_address = self.listenSocket.accept() #方法2,多进程服务器,并发服务器于多个客户端 newClientProcess = Process(target = self.handleRequest) newClientProcess.start() #因为创建的新进程中,会对这个套接字+1,所以需要在主进程中减去依次,即调用一次close self.clientSocket.close() def handleRequest(self): '用一个新的进程,为一个客户端进行服务' recvData = self.clientSocket.recv(2014) requestHeaderLines = recvData.splitlines() for line in requestHeaderLines: print(line) httpRequestMethodLine = requestHeaderLines[0] getFileName = re.match("[^/]+(/[^ ]*)", httpRequestMethodLine).group(1) print("file name is ===>%s"%getFileName) #for test if getFileName == '/': getFileName = documentRoot + "/index.html" else: getFileName = documentRoot + getFileName print("file name is ===2>%s"%getFileName) #for test try: f = open(getFileName) except IOError: responseHeaderLines = "HTTP/1.1 404 not found\r\n" responseHeaderLines += "\r\n" responseBody = "====sorry ,file not found====" else: responseHeaderLines = "HTTP/1.1 200 OK\r\n" responseHeaderLines += "\r\n" responseBody = f.read() f.close() finally: response = responseHeaderLines + responseBody self.clientSocket.send(response) self.clientSocket.close()#设定服务器的端口serverAddr = (HOST, PORT) = '', 8888#设置服务器服务静态资源时的路径documentRoot = './html'def makeServer(serverAddr): server = WSGIServer(serverAddr) return serverdef main(): httpd = makeServer(serverAddr) print('web Server: Serving HTTP on port %d ...\n'%PORT) httpd.serveForever()if __name__ == '__main__': main()
阅读全文
0 0
- 网页静态服务器-3-使用类
- 服务器----静态网页配置
- nginx 静态网页服务器
- Ubuntu服务器部署静态网页
- 动、静态网页服务器软件
- java 手动写http静态网页服务器
- java 手动写http静态网页服务器
- 使用 XML 静态读取网页
- 使用html制作静态网页
- 使用Sphinx生成静态网页
- 使用mod_security保护网页服务器
- 使用过滤器Filter实现网页静态化
- 使用Freemarker实现网页静态化
- 使用Freemarker实现网页静态化
- 使用Flask渲染静态网页(模板)
- 简单的html静态网页使用libevent
- 10043---使用Freemarker实现网页静态化
- 为node.js服务器添加静态网页,express模块。
- 欢迎使用CSDN-markdown编辑器
- 观看杜洋工作室焊接入门个人总结
- spring eurake中使用IP注册
- springboot填坑之 -- spring cloud基于ip的discovery服务注册中心配置
- Gym 101343.J
- 网页静态服务器-3-使用类
- 洛谷P1220 关路灯(DP或深搜)
- lightGBM学习资料
- GitHub:(1) 官方快速入门文档学习
- web开发问题
- 服务器动态资源请求
- css white-space属性详解
- 大学生如何搞自己的科研项目
- oracle根据时间对数据进行统计每天生成的量