成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

int64 / 2451人閱讀

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

Flask或者其他框架都是封裝的比較完善,我們可以不去關(guān)注路由、SESSION等到底是怎么實(shí)現(xiàn)的,現(xiàn)在我們使用socket來實(shí)現(xiàn)一個(gè)帶有注冊(cè)、登錄功能的To do網(wǎng)站,這樣能對(duì)后端框架了解的稍微更深入一點(diǎn)(當(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):
    # 建立一個(gè)socket.socket()類s
    with socket.socket() as s:
        # 設(shè)置s在服務(wù)端關(guān)閉后馬上釋放端口,避免Address already in use錯(cuò)誤
        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
            # 防止瀏覽器傳空請(qǐng)求過來
            if len(r.split()) < 2:
                continue
            # 最后取得的r是一個(gè)http請(qǐng)求頭字符串,對(duì)其解析,然后使用sendall返回相應(yīng)的內(nèi)容  
            request = Request(r)
            # 每次請(qǐng)求時(shí)打印時(shí)間,請(qǐng)求的方法和路徑
            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ù)代碼的簡(jiǎn)單說明可以看注釋;from exts import Request:從exts導(dǎo)入一個(gè)Request類,這個(gè)Request類是自己編寫的,用于解析http請(qǐng)求頭,這部分是很簡(jiǎn)單的,在網(wǎng)上搜索http請(qǐng)求相關(guān)內(nèi)容,就可以自行寫一個(gè),包括返回請(qǐng)求頭的路徑、方法、各個(gè)字段以及body部分等,都是字符串相關(guān)的操作。
from route import response_for_request:從route.py導(dǎo)入相應(yīng)函數(shù),即傳入一個(gè)上一步中的Request類,返回對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容,具體實(shí)現(xiàn)將在后續(xù)講解。


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


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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41330.html

相關(guān)文章

  • 對(duì)python socket編程初探

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

    stormgens 評(píng)論0 收藏0
  • python socket編程】—— 2.解析http請(qǐng)求頭

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

    韓冰 評(píng)論0 收藏0
  • PHP socket初探 --- 先從一個(gè)簡(jiǎn)單的socket服務(wù)器開始

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

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

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

    sf190404 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<