国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【python socket編程】—— 1.初探

int64 / 2437人閱讀

摘要:從導入相應函數,即傳入一個上一步中的類,返回對應的網頁內容,具體實現將在后續講解。后續只要去處理解析請求和響應部分即可,主程序可以不用再修改。下一篇文章編程解析請求頭

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模塊。下面分享一下個人對python socket的一些理解。 socket編程步驟 服務端創建一個socket,綁定地址和端...

    stormgens 評論0 收藏0
  • python socket編程】—— 2.解析http請求頭

    摘要:請求頭的換行使用的是。編寫一個類,來解析請求的方法路徑和,如下下一篇文章編程響應 前文:【python socket編程】—— 1.初探 在上一篇文章中我們知道,socket.accept()接受的數據是請求頭,請求頭格式是這樣的: POST /login HTTP/1.1 Host: 127.0.0.1:1207 User-Agent: Mozilla/5.0 (X11; Ubunt...

    韓冰 評論0 收藏0
  • PHP socket初探 --- 先從一個簡單的socket服務器開始

    摘要:原文地址的中文名字叫做套接字,這種東西就是對的封裝。運行結果如下簡單解析一下上述代碼來說明一下服務器的流程首先,根據協議族或地址族套接字類型以及具體的的某個協議來創建一個。很容易受到攻擊,造成拒絕服務。 [原文地址:https://blog.ti-node.com/blog...] socket的中文名字叫做套接字,這種東西就是對TCP/IP的封裝。現實中的網絡實際上只有四層而已,從上...

    miguel.jiang 評論0 收藏0
  • PHP socket初探 --- 關于IO的一些枯燥理論

    摘要:原文地址要想更好了解編程,有一個不可繞過的環節就是在中,一切皆文件實際上要文件干啥不就是讀寫么所以,這句話本質就是才是王道用的打開文件關閉文件讀讀寫寫,這叫本地文件在編程中,本質就是網絡所以,在開始進一步的編程前,我們必須先從概念上認識好 [原文地址:https://blog.ti-node.com/blog...] 要想更好了解socket編程,有一個不可繞過的環節就是IO.在Lin...

    sf190404 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<