一.简单web框架
总体流程很简单,浏览器输入127.0.0.1:8000,返回html,因为html中有css、js,浏览器会默认为test.css、test.js加上127.0.0.1来访问,因为HTTP是短链接,一旦127.0.0.1:8000完成请求应答,会立即拼接test.html中test.css、test.js进行访问。
import socket sk = socket.socket() sk.bind(("127.0.0.1",8000)) sk.listen() while 1: conn,addr = sk.accept() from_client_msg = conn.recv(1024) # print(from_client_msg.decode("utf-8").split(" ")) #以空格分开看清每部分内容 url = from_client_msg.decode("utf-8").split(" ")[1] if url == "/": #浏览器输入http://127.0.0.1:8000,服务端得到的url为"/",是因为浏览器默认在末尾补充"/" with open("test.html","rb") as f: conn.send(b"HTTP/1.1 200 OK \r\n\r\n") conn.send(f.read()) conn.close() elif url == "/test.css": with open("test.css","rb") as f: conn.send(b"HTTP/1.1 200 OK \r\n\r\n") conn.send(f.read()) conn.close() elif url == "/test.js": with open("test.js","rb") as f: conn.send(b"HTTP/1.1 200 OK \r\n\r\n") conn.send(f.read()) conn.close() sk.close()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="test.css"> <script src="test.js"></script> </head> <body> <h1>你好啊</h1> </body> </html>
h1{ background-color: red; }
alert("hello!");