成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

int64 / 2492人閱讀

摘要:從導(dǎo)入相應(yīng)函數(shù),即傳入一個上一步中的類,返回對應(yīng)的網(wǎng)頁內(nèi)容,具體實現(xiàn)將在后續(xù)講解。后續(xù)只要去處理解析請求和響應(yīng)部分即可,主程序可以不用再修改。下一篇文章編程解析請求頭

Flask或者其他框架都是封裝的比較完善,我們可以不去關(guān)注路由、SESSION等到底是怎么實現(xiàn)的,現(xiàn)在我們使用socket來實現(xiàn)一個帶有注冊、登錄功能的To do網(wǎng)站,這樣能對后端框架了解的稍微更深入一點(當(dāng)然你也可以直接去看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:
        # 設(shè)置s在服務(wù)端關(guān)閉后馬上釋放端口,避免Address already in use錯誤
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        # 綁定host和port
        s.bind((host, port))
        while 1:
            # 開始監(jiān)聽傳入連接,可以掛起的最大連接數(shù)為5
            s.listen(5)
            # 接受連接,根據(jù)buffer_size不斷讀取內(nèi)容
            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返回相應(yīng)的內(nèi)容  
            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函數(shù)代碼的簡單說明可以看注釋;from exts import Request:從exts導(dǎo)入一個Request類,這個Request類是自己編寫的,用于解析http請求頭,這部分是很簡單的,在網(wǎng)上搜索http請求相關(guān)內(nèi)容,就可以自行寫一個,包括返回請求頭的路徑、方法、各個字段以及body部分等,都是字符串相關(guān)的操作。
from route import response_for_request:從route.py導(dǎo)入相應(yīng)函數(shù),即傳入一個上一步中的Request類,返回對應(yīng)的網(wǎng)頁內(nèi)容,具體實現(xiàn)將在后續(xù)講解。


可以說,主程序就已經(jīng)編寫好了,整個邏輯也很簡單,使用socket監(jiān)聽連接,解析請求,返回請求對應(yīng)的內(nèi)容。后續(xù)只要去處理解析請求和響應(yīng)部分即可,主程序可以不用再修改。


下一篇文章:【python socket編程】—— 2.解析http請求頭

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41330.html

相關(guān)文章

  • python socket編程初探

    摘要:對于網(wǎng)絡(luò)編程來說,免不了要用到模塊。表示另一端的地址。以上主要是針對流數(shù)據(jù)的編程。對于協(xié)議的數(shù)據(jù),處理略有不同。通過傳入對象調(diào)用來監(jiān)聽對象的文件描述符,一旦發(fā)現(xiàn)對象就緒,就通知應(yīng)用程序進(jìn)行相應(yīng)的讀寫操作。 對于python網(wǎng)絡(luò)編程來說,免不了要用到socket模塊。下面分享一下個人對python socket的一些理解。 socket編程步驟 服務(wù)端創(chuàng)建一個socket,綁定地址和端...

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

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

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

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

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

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

    sf190404 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<