Python网络编程—TCP套接字之HTTP传输
生活随笔
收集整理的這篇文章主要介紹了
Python网络编程—TCP套接字之HTTP传输
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
HTTP協(xié)議 (超文本傳輸協(xié)議)
1.用途 : 網(wǎng)頁獲取,數(shù)據(jù)的傳輸
2.特點:
- 應(yīng)用層協(xié)議,傳輸層使用tcp傳輸
- 簡單,靈活,很多語言都有HTTP專門接口
- 無狀態(tài),協(xié)議不記錄傳輸內(nèi)容
- http1.1 支持持久連接,豐富了請求類型
3.網(wǎng)頁請求過程
HTTP請求(request)
1.請求行 : 具體的請求類別和請求內(nèi)容
- GET / HTTP/1.1
- 請求類別 請求內(nèi)容 協(xié)議版本
請求類別:每個請求類別表示要做不同的事情
- GET : 獲取網(wǎng)絡(luò)資源
- POST :提交一定的信息,得到反饋
- HEAD : 只獲取網(wǎng)絡(luò)資源的響應(yīng)頭
- PUT : 更新服務(wù)器資源
- DELETE : 刪除服務(wù)器資源
- CONNECT
- TRACE : 測試
- OPTIONS : 獲取服務(wù)器性能信息
2.請求頭:對請求的進一步解釋和描述
- Accept-Encoding: gzip
3.空行
4.請求體: 請求參數(shù)或者提交內(nèi)容
1 from socket import * 2 3 s = socket() 4 s.bind(('0.0.0.0',8001)) 5 s.listen(3) 6 c,addr = s.accept() 7 print("Connect from",addr) 8 data = c.recv(4096) 9 print(data) 10 11 data = """HTTP/1.1 200 OK 12 Content-Type:text/html 13 14 <h1>Hello world</h1> 15 """ 16 c.send(data.encode()) 17 18 c.close() 19 s.close() http 請求響應(yīng)示例http響應(yīng)(response)
響應(yīng)格式:響應(yīng)行,響應(yīng)頭,空行,響應(yīng)體
響應(yīng)行 : 反饋基本的響應(yīng)情況
- HTTP/1.1 200 OK
- 版本信息 響應(yīng)碼 附加信息
響應(yīng)碼 :
- 1xx 提示信息,表示請求被接收
- 2xx 響應(yīng)成功
- 3xx 響應(yīng)需要進一步操作,重定向
- 4xx 客戶端錯誤
- 5xx 服務(wù)器錯誤
響應(yīng)頭:對響應(yīng)內(nèi)容的描述
- Content-Type: text/html
響應(yīng)體:響應(yīng)的主體內(nèi)容信息
1 from socket import * 2 3 # 處理客戶端請求 4 def handle(connfd): 5 request = connfd.recv(4096) # 接收請求 6 # 防止客戶端斷開request為空 7 if not request: 8 return 9 request_line = request.splitlines()[0] 10 info = request_line.decode().split(' ')[1] 11 if info == '/': 12 with open('index.html') as f: 13 response = "HTTP/1.1 200 OK\r\n" 14 response += "Content-Type:text/html\r\n" 15 response += '\r\n' 16 response += f.read() 17 else: 18 response = "HTTP/1.1 404 Not Found\r\n" 19 response += "Content-Type:text/html\r\n" 20 response += '\r\n' 21 response += "<h1>Sorry...</h1>" 22 # 發(fā)送給瀏覽器 23 connfd.send(response.encode()) 24 25 26 # 搭建tcp網(wǎng)絡(luò) 27 sockfd = socket() 28 sockfd.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 29 sockfd.bind(('0.0.0.0',8000)) 30 sockfd.listen(3) 31 while True: 32 connfd,addr = sockfd.accept() 33 handle(connfd) # 處理客戶端請求 http 發(fā)送網(wǎng)頁給瀏覽器?
轉(zhuǎn)載于:https://www.cnblogs.com/maplethefox/p/10989040.html
總結(jié)
以上是生活随笔為你收集整理的Python网络编程—TCP套接字之HTTP传输的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 内存模型(一)
- 下一篇: 前端三部曲之Html -- 1(html