静态服务器实现响应浏览器的访问
import socket
import threading
import re
class CreateServer(object):
def __init__(self, port):
self.port = port
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind(("", self.port))
def webConnect(self, urlClient):
# 接收浏览器的请求报文
data = urlClient.recv(1024).decode("utf-8")
try:
request = re.search("GET (/.*?) HTTP", data).group(1)
except:
urlClient.close()
return
status_code = "200 ok" # 状态码,默认为ok
if request == '/':
responsebody = 'hello world!'.encode()
elif request == '/index.html':
with open('index.html', 'rb') as f:
responsebody = f.read()
elif request == '/login.html':
with open('login.png', 'rb') as f:
responsebody = f.read()
else:
status_code = "404 not found"
with open('error.html', 'rb') as f:
responsebody = f.read()
# 发送响应报文
responseHeader = "HTTP/1.1 " + status_code + "\r\n\r\n"
reponse = responseHeader.encode() + responsebody
urlClient.send(reponse)
def listen(self):
self.server.listen(10)
while True:
# 当有客户端连接时,为新的连接新建一个线程
urlClient, urlAddr = self.server.accept()
# 为连接的客户端新建一个线程
clientThread = threading.Thread(target=self.webConnect,
args=(urlClient,))
clientThread.start()
if __name__ == '__main__':
server = CreateServer(8888)
server.listen()