from socket import * import re tcp = socket(AF_INET, SOCK_STREAM) # 设置套接字选项,可以端口重用 tcp.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) # 绑定端口号 tcp.bind(('', 8848)) tcp.listen(True) while True: client, addr = tcp.accept() # 接收浏览器的请求头 data = client.recv(1024).decode() print(data) # 返回数据 # 响应头 空格 响应体 head = 'HTTP/1.1 200 ok\r\n' list = data.splitlines() try: print(list[0].splitlines()[0]) # 用正则取出文件名 re_match = re.match(r'[^/]+(/[^ ]*) ', list[0]) if re_match: file_name = re_match.group(1) print(file_name) if file_name == '/': file_name = "/index.html" except Exception as e: print(e) try: with open (r'./html%s' % file_name, 'rb') as f: body = f.read() # body = 'show page is find' content1 = head + '\r\n' client.send(content1.encode()) client.send(body) except Exception as q: print(q) head = 'HTTP/1.1 404 NOT Find\r\n' body = 'not find page' content = head + '\r\n'+ body client.send(content.encode()) # 关闭客户端 client.close()# 关闭套接字 tcp.close()
python实现简单的tcp服务器
最新推荐文章于 2024-07-15 19:55:17 发布