本文主要是为了测试让浏览器 (而不单单是用 socket 包写的 client)和 纯 socket 包写的 server 进行通信,从而理解 HTTP 协议的规范
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('192.168.56.101', 8008))
sock.listen(5)
while True:
# 等待连接
conn, add = sock.accept()
data = conn.recv(8096) # 接收客户端发来的消息
# 从data中取到路径
# data = str(data, encoding="utf8") # 把收到的字节类型的数据转换成字符串
data = str(data) # 把收到的字节类型的数据转换成字符串
print 'data = {0}'.format(data)
# Point 1: 按\r\n分割
data1 = data.split("\r\n")[0]
url = data1.split()[1] # url是我们从浏览器发过来的消息中分离出的访问路径
print 'url = {0}'.format(url)
# Point 2: 按照 Http 响应格式进行回复
conn.send(b'HTTP/1.1 200 OK\r\n\r\n') # 因为要遵循HTTP协议,所以回复的消息也要加状态行
# 根据不同的路径返回不同内容
if url == "/index":
response = b"index"
elif url == "/home":
response = b"home"
else:
response = b"404 not found! we only support /index /home"
#conn.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html;charset=utf-8\r\n\r\n'),发送中文的时候注意格式加上\r\n
#conn.send(bytes('你好',encoding='utf-8'))
conn.send(response)
conn.close()
详情参考: https://www.cnblogs.com/clschao/articles/9456966.html