import socket
import re
import multiprocessing
import time
import dynamic.wsgi01
class WSGIServer(object):
def __init__(self,static):
self.static = static
self.socket_tcp=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.socket_tcp.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
self.socket_tcp.bind(('',8080))
self.socket_tcp.listen(128)
def hand_body(self,status,headers):
self.status=status
self.headers=[('server','mini_wed')]
self.headers+=headers
def wed_ss(self,new_socket):
recv_data=new_socket.recv(1024).decode('utf-8')
ret = re.match(r'[^/]*/([^ ]*)\sHTTP',recv_data)
data = ret.group(1)
if data.endswith('.html') or data=='':
if data=="":
data='index.html'
env=dict()
env['PATH_INFO']=data
content=dynamic.wsgi01.application(env,self.hand_body)
a='HTTP/1.1 %s \r\n'%self.status
for temp in self.headers:
a+='%s:%s\r\n'%(temp[0],temp[1])
a+="\r\n"
response=a+content
new_socket.send(response.encode('utf-8'))
else:
try:
file = open("%s/%s"%(self.static,data),"rb")
except:
a='HTTP/1.1 404 NOTFOUND\r\n'
a+='Content-Type: text/html; charset=utf-8\r\n'
a+='\r\n'
a+='找不到网页'
new_socket.send(a.encode('utf-8'))
else:
content=file.read()
file.close()
a='HTTP/1.1 200 OK\r\n'
a+='Content-Tybe:text/html;charset=utf-8\r\n'
a+='\r\n'
new_socket.send(a.encode('utf-8'))
new_socket.send(content)
def run_server(self):
while True:
print('--1--')
new_socket,new_tcp=self.socket_tcp.accept()
p = multiprocessing.Process(target=self.wed_ss,args=(new_socket,))
p.start()
new_socket.close()
self.socket_tcp.close()
def main():
#插入字典,留配置的文件
with open('./str.txt')as f:
content=f.read()
d=eval(content)
static=d['static_path']
# dynamic=d['dynamic_path']
# print(dynamic)
server=WSGIServer(static)
server.run_server()
if __name__ == '__main__':
main()