HTTP基础响应
在HTTP编程之中核心的本质依然是进行请求和响应,只不过这个时候的响应除了数据之外还需要包含有一些头信息,这些内容一定要被浏览器进行解析执行,浏览器在进行请求的时候需要依据服务器的主机名称和访问端口进行请求的发送。
本次不搞非常繁琐的WEB页面定义,只通过HTTP服务器实现一个最为基础的HTML代码数据的获取,而本次程序将直接使用浏览器作为网络客户端。
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import socket import multiprocessing class HTTPServer: def __init__(self,port): self.server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) self.server_socket.bind(("0.0.0.0",port)) self.server_socket.listen() def start(self): while True: client_socket,client_address = self.server_socket.accept() print("[新的客户端连接]客户端IP:%s、访问端口:%s" % client_address) handle_client_process = multiprocessing.Process(target=self.handle_response, args=(client_socket,)) handle_client_process.start() def handle_response(self,client_socket): request_headers = client_socket.recv(1024) print("[客户端请求信息]%s" % request_headers.decode()) response_start_line = "HTTP/1.1 200 OK\r\n" response_headers = "Server:giiiServer\r\nContent-Type:text/html\r\n" response_body =''' <html> <head> <title>基础响应</title> <meta charset='UTF-8'> </head> <body> <h1>你好啊,基础响应</h1> <h1>你好啊,响应的基础</h1> </body> </html> ''' response = response_start_line + response_headers + "\r\n" + response_body client_socket.send(bytes(response,"UTF-8")) client_socket.close() def main(): http_server = HTTPServer(80) http_server.start() if __name__ == "__main__": main()
|
测试结果
