摘要:從導入相應函數,即傳入一個上一步中的類,返回對應的網頁內容,具體實現將在后續講解。后續只要去處理解析請求和響應部分即可,主程序可以不用再修改。下一篇文章編程解析請求頭
Flask或者其他框架都是封裝的比較完善,我們可以不去關注路由、SESSION等到底是怎么實現的,現在我們使用socket來實現一個帶有注冊、登錄功能的To do網站,這樣能對后端框架了解的稍微更深入一點(當然你也可以直接去看Flask源碼)。
主程序runserver.py代碼如下:
#!/usr/bin/env python # -*- coding:utf-8 -*- import socket from exts import Request from route import response_for_request from datetime import datetime def run_server(host="", port=1207): # 建立一個socket.socket()類s with socket.socket() as s: # 設置s在服務端關閉后馬上釋放端口,避免Address already in use錯誤 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 綁定host和port s.bind((host, port)) while 1: # 開始監聽傳入連接,可以掛起的最大連接數為5 s.listen(5) # 接受連接,根據buffer_size不斷讀取內容 connection, address = s.accept() r = "" buffer_size = 1024 while 1: data = connection.recv(1024).decode("utf-8") r += data if len(data) < buffer_size: break # 防止瀏覽器傳空請求過來 if len(r.split()) < 2: continue # 最后取得的r是一個http請求頭字符串,對其解析,然后使用sendall返回相應的內容 request = Request(r) # 每次請求時打印時間,請求的方法和路徑 print(str(datetime.now())[:19], request.method, request.path) response = response_for_request(request) connection.sendall(response) connection.close() if __name__ == "__main__": run_server()
run_server函數代碼的簡單說明可以看注釋;from exts import Request:從exts導入一個Request類,這個Request類是自己編寫的,用于解析http請求頭,這部分是很簡單的,在網上搜索http請求相關內容,就可以自行寫一個,包括返回請求頭的路徑、方法、各個字段以及body部分等,都是字符串相關的操作。
from route import response_for_request:從route.py導入相應函數,即傳入一個上一步中的Request類,返回對應的網頁內容,具體實現將在后續講解。
可以說,主程序就已經編寫好了,整個邏輯也很簡單,使用socket監聽連接,解析請求,返回請求對應的內容。后續只要去處理解析請求和響應部分即可,主程序可以不用再修改。
下一篇文章:【python socket編程】—— 2.解析http請求頭
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41330.html
摘要:對于網絡編程來說,免不了要用到模塊。表示另一端的地址。以上主要是針對流數據的編程。對于協議的數據,處理略有不同。通過傳入對象調用來監聽對象的文件描述符,一旦發現對象就緒,就通知應用程序進行相應的讀寫操作。 對于python網絡編程來說,免不了要用到socket模塊。下面分享一下個人對python socket的一些理解。 socket編程步驟 服務端創建一個socket,綁定地址和端...
摘要:請求頭的換行使用的是。編寫一個類,來解析請求的方法路徑和,如下下一篇文章編程響應 前文:【python socket編程】—— 1.初探 在上一篇文章中我們知道,socket.accept()接受的數據是請求頭,請求頭格式是這樣的: POST /login HTTP/1.1 Host: 127.0.0.1:1207 User-Agent: Mozilla/5.0 (X11; Ubunt...
摘要:原文地址的中文名字叫做套接字,這種東西就是對的封裝。運行結果如下簡單解析一下上述代碼來說明一下服務器的流程首先,根據協議族或地址族套接字類型以及具體的的某個協議來創建一個。很容易受到攻擊,造成拒絕服務。 [原文地址:https://blog.ti-node.com/blog...] socket的中文名字叫做套接字,這種東西就是對TCP/IP的封裝。現實中的網絡實際上只有四層而已,從上...
摘要:原文地址要想更好了解編程,有一個不可繞過的環節就是在中,一切皆文件實際上要文件干啥不就是讀寫么所以,這句話本質就是才是王道用的打開文件關閉文件讀讀寫寫,這叫本地文件在編程中,本質就是網絡所以,在開始進一步的編程前,我們必須先從概念上認識好 [原文地址:https://blog.ti-node.com/blog...] 要想更好了解socket編程,有一個不可繞過的環節就是IO.在Lin...
閱讀 2753·2021-11-22 14:45
閱讀 896·2021-10-15 09:41
閱讀 1058·2021-09-27 13:35
閱讀 3662·2021-09-09 11:56
閱讀 2626·2019-08-30 13:03
閱讀 3191·2019-08-29 16:32
閱讀 3296·2019-08-26 13:49
閱讀 766·2019-08-26 10:35