socket
socket服务器
import socket
sock = socket.socket()
sock.bind(('127.0.0.1', 8080))
sock.listen(5)
while True:
conn, addr = sock.accept()
data = conn.recv(1024) # data为浏览器的请求(请求头+请求体)内容,类型为type(data)=bytes
conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
conn.send(b'hy')
conn.close()
浏览器访问
浏览器本质是一个socket客户端
访问地址
http://127.0.0.1:8080/
请求内容(字符数为612即612字节,因此服务器一次取1024字节足够)
GET / HTTP/1.1\r\n
Host: 127.0.0.1:8080\r\n
Connection: keep-alive\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: csrftoken=AmccoQlhzf9At4YXw6RGDVej7TcOCMzwvl4oR3ElSKtxlFBEBInIPSiFKGITHfrm; sessionid=elt65r87yocl51g4uiychxp46yhcyxxl; _xsrf=2|29287a7d|f4dbadc68470be9c84269330a453a416|1512198017\r\n\r\n
集成路由系统
版本一
import socket
sock = socket.socket()
sock.bind(('127.0.0.1', 8080))
sock.listen(5)
while True:
conn, addr = sock.accept()
data = conn.recv(1024)
data = str(data, encoding='utf-8')
headers, bodys = data.split('\r\n\r\n')
print(bodys)
temp_list = headers.split('\r\n')
method, url, protocal = temp_list[0].split(' ')
conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
if url == '/':
conn.send(b'welcome')
else:
conn.send(b'
404 not found
')conn.close()
版本二
import socket
def f1(request):
return b'welcome'
routers = [
('/', f1),
]
sock = socket.socket()
sock.bind(('127.0.0.1', 8080))
sock.listen(5)
while True:
conn, addr = sock.accept()
data = conn.recv(8096)
data = str(data, encoding='utf-8')
print(data)
headers, bodys = data.split('\r\n\r\n')
temp_list = headers.split('\r\n')
method, url, protocal = temp_list[0].split(' ')
conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
func_name = None
for item in routers:
if item[0] == url:
func_name = item[1]
break
if func_name:
response = func_name(data)
else:
response = b"
404 not found
"conn.send(response)
conn.close()
集成模板系统
版本一:静态模板