import socket import re def main(): """主函数""" # 封装 一个函数一个功能 创建服务器 提取客户端 处理单独的客户端 # tcp_socket = make_server() # accept_client(tcp_socket) tcp_socket = WebServer() tcp_socket.accept_client() class WebServer(object): def __init__(self): """创建服务器 初始化服务器属性""" self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.tcp_socket.bind(('', 1372)) self.tcp_socket.listen(128) # return tcp_socket def accept_client(self): """不断提取客户端""" while True: client, addres = self.tcp_socket.accept() self.client_exec(client) # 关闭服务器 self.tcp_socket.close() def client_exec(self, client): """单独处理客户端""" re_data = client.recv(1024).decode() re_lines = re_data.splitlines() print(re_lines[0]) try: re_match = re.match(r'[^/]+(/[^ ]*)', re_lines[0]) if re_match: file_name = re_match.group(1) if file_name == '/': file_name = '/index.html' except Exception as e: print(e) try: head = 'HTTP/1.1 200 OK\r\n' with open('./html{}'.format(file_name), 'rb') as file: body = file.read() content = head + '\r\n' client.send(content.encode()) client.send(body) except Exception as e: print(e) head = 'HTTP/1.1 404 NOT FOUND\r\n' body = 'sorry not find' content = head + '\r\n' + body client.send(content.encode()) # 关闭客户端服务器 client.close() if __name__ == '__main__': main()
面向对象tcp服务器端
猜你喜欢
转载自blog.csdn.net/weixin_42020284/article/details/80019229
今日推荐
周排行