本文主要是爲了測試讓瀏覽器 (而不單單是用 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