国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)

這篇具有很好參考價(jià)值的文章主要介紹了python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、靜態(tài)web服務(wù)器

靜態(tài)web法服務(wù)器:可為發(fā)出請(qǐng)求的瀏覽器提供靜態(tài)文檔的程序,平時(shí)上網(wǎng)瀏覽的頁面都是動(dòng)態(tài)的,而開發(fā)的是靜態(tài)的,頁面數(shù)據(jù)不會(huì)發(fā)生變化

搭建python自帶的靜態(tài)web服務(wù)器

  • 命令:python3 -m http.server 端口號(hào)
    • -m:表示運(yùn)行包里面的模塊,執(zhí)行該命令需進(jìn)入指定靜態(tài)文件目錄,通過瀏覽器就能訪問對(duì)應(yīng)html文件
    • 端口號(hào)若不指定則默認(rèn)為8000

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)

  • 訪問:http://127.0.0.1:9000/

瀏覽器訪問搭建的靜態(tài)web服務(wù)器及其通信過程

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)

二、靜態(tài)Web服務(wù)器-返回固定頁面數(shù)據(jù)?

靜態(tài)Web服務(wù)器實(shí)現(xiàn)步驟

  1. 編寫TCP服務(wù)端程序
  2. 獲取瀏覽器發(fā)送的http請(qǐng)求報(bào)文數(shù)據(jù)
  3. 讀取固定數(shù)據(jù),將頁面數(shù)據(jù)組裝為http響應(yīng)報(bào)文數(shù)據(jù)發(fā)送給瀏覽器
  4. http響應(yīng)報(bào)文數(shù)據(jù)發(fā)送完后,關(guān)閉服務(wù)于客戶端的套接字

實(shí)現(xiàn)代碼?

import socket
if __name__ == '__main__':
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   # 創(chuàng)建TCP服務(wù)端套接字
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)   # 設(shè)置端口號(hào)復(fù)用,程序退出端口立即釋放
    server_socket.bind(('', 9000))   # 綁定端口號(hào)
    server_socket.listen(128)     # 設(shè)置監(jiān)聽
    while True:   # 循環(huán)接受客戶端的連接請(qǐng)求
        comm_socket, ip_port = server_socket.accept()   # 等待接受客戶端的連接請(qǐng)求
        recv_data = comm_socket.recv(4096)   # 獲取瀏覽器發(fā)送的http請(qǐng)求報(bào)文數(shù)據(jù)
        print('接收到的數(shù)據(jù)解碼后為:', recv_data.decode('utf-8'))
        with open('C:/Users/username/Desktop/ubuntu/file1/1.txt', 'rb') as file:
            file_data = file.read()    # 讀取文件數(shù)據(jù)
        response_line = "HTTP/1.1 200 OK  ?。?!\r\n"   # 響應(yīng)行
        response_header = "Server: PWS1.0  # 服務(wù)器名稱及版本\r\n"   # 響應(yīng)頭
        response_body = file_data    # 響應(yīng)體
        response_data = (response_line + response_header + '\r\n').encode('utf-8') + response_body   # 將數(shù)據(jù)組裝成HTTP響應(yīng)報(bào)文數(shù)據(jù)發(fā)送給瀏覽器
        comm_socket.send(response_data)   # 發(fā)送響應(yīng)報(bào)文數(shù)據(jù)至瀏覽器
        comm_socket.close()    # 關(guān)閉服務(wù)于客戶端的套接字

輸出如下

瀏覽器刷新后輸出:
接收到的數(shù)據(jù)解碼后為: GET /file1/1.txt HTTP/1.1
Host: 127.0.0.1:9000
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=1wb7v0r0BQuokJCxRS4JAO2XApvrHXFP90t2PiYb0mz7AwWS0NoKTi0zNaIjOfTl; Hm_lvt_18f619820855042bca58b32408f44de7=1658219884
If-Modified-Since: Sat, 15 Oct 2022 02:36:31 GMT

瀏覽器響應(yīng)如下?

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)

三、靜態(tài)Web服務(wù)器-返回指定頁面數(shù)據(jù)

實(shí)現(xiàn)步驟

  1. 獲取用戶請(qǐng)求資源路徑
  2. 根據(jù)路徑讀取指定文件數(shù)據(jù)
  3. 將指定文件數(shù)據(jù)組裝為響應(yīng)報(bào)文,發(fā)送給瀏覽器
  4. 判斷請(qǐng)求文件在服務(wù)端不存在,組裝404狀態(tài)響應(yīng)報(bào)文,發(fā)送給瀏覽器

代碼實(shí)現(xiàn)

import socket
def main():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   # 創(chuàng)建TCP服務(wù)端套接字
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)   # 設(shè)置端口號(hào)復(fù)用,程序退出端口立即釋放
    server_socket.bind(("", 9000))   # 綁定端口號(hào)
    server_socket.listen(128)   # 設(shè)置監(jiān)聽
    while True:
        comm_socket, ip_port = server_socket.accept()   # 等待接收客戶端連接請(qǐng)求
        recv_data = comm_socket.recv(4096)   # 接收請(qǐng)求的二進(jìn)制數(shù)據(jù)
        if len(recv_data) == 0 :
            print('未獲取到請(qǐng)求數(shù)據(jù)!')
            comm_socket.close()
            return
        recv_content = recv_data.decode('utf-8')   # 對(duì)二進(jìn)制數(shù)據(jù)解碼
        print('獲取到的數(shù)據(jù)內(nèi)容為:', recv_content)
        request_list = recv_content.split(" ", maxsplit=2)  # 根據(jù)指定字符串進(jìn)行分割,最大分割次數(shù)為2
        request_path = request_list[1]  # 獲取請(qǐng)求資源路徑
        print('請(qǐng)求路徑為:', request_path)
        if request_path == "/":   # 判斷請(qǐng)求的是否是根目錄,若是則返回首頁指定數(shù)據(jù)
            request_path = "/index.html"
        try:
            with open('C:/Users/username/Desktop/ubuntu' + request_path, 'rb') as file:    # 動(dòng)態(tài)打開指定文件
                file_data = file.read()   # 讀取指定文件數(shù)據(jù)
        except Exception as e:   # 請(qǐng)求異常,資源不存在,返回指定404錯(cuò)誤數(shù)據(jù)
            with open('C:/Users/username/Desktop/ubuntu/error.html', 'rb') as file:   # 打開指定錯(cuò)誤文件
                error_data = file.read()   # 讀取指定錯(cuò)誤數(shù)據(jù)
            response_line = "HTTP/1.1 404 Not Found??!\r\n"    # 響應(yīng)行
            response_header = "Server: PWS1.0 服務(wù)器名稱及版本……\r\n"   # 響應(yīng)頭
            response_body = error_data   # 響應(yīng)體
            response_data = (response_line + response_header + '\r\n').encode('utf-8') + response_body   # 拼接響應(yīng)報(bào)文
            comm_socket.send(response_data)   # 發(fā)送數(shù)據(jù)給瀏覽器
        else:
            response_line = "HTTP/1.1 200 OK # 成功??!\r\n"
            response_header = "Server: PWS1.0 # 服務(wù)器名稱版本!\r\n"
            response_body = file_data
            response_data = (response_line + response_header + '\r\n').encode('utf-8') + response_body
            comm_socket.send(response_data)
        finally:
            comm_socket.close()   # 關(guān)閉服務(wù)于客戶端的套接字
if __name__ == '__main__':
    main()

輸出如下

404錯(cuò)誤輸出:
獲取到的數(shù)據(jù)內(nèi)容為: GET /ab.txt HTTP/1.1
Host: 127.0.0.1:9000
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=1wb7v0r0BQuokJCxRS4JAO2XApvrHXFP90t2PiYb0mz7AwWS0NoKTi0zNaIjOfTl; Hm_lvt_18f619820855042bca58b32408f44de7=1658219884


請(qǐng)求路徑為: /ab.txt
未獲取到請(qǐng)求數(shù)據(jù)!

正確響應(yīng)輸出:
獲取到的數(shù)據(jù)內(nèi)容為: GET /index.html HTTP/1.1
Host: 127.0.0.1:9000
Connection: keep-alive
……  
…… # 中間部分同錯(cuò)誤輸出


請(qǐng)求路徑為: /index.html
未獲取到請(qǐng)求數(shù)據(jù)!

錯(cuò)誤響應(yīng)

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)

正確響應(yīng)

python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)??學(xué)習(xí)導(dǎo)航:http://xqnav.top/文章來源地址http://www.zghlxwxcb.cn/news/detail-438418.html

到了這里,關(guān)于python自帶靜態(tài)web服務(wù)器搭建代碼實(shí)現(xiàn)(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【100天精通python】Day47:python網(wǎng)絡(luò)編程_Web開發(fā):web服務(wù)器,前端基礎(chǔ)以及靜態(tài)服務(wù)器

    目錄 1? 網(wǎng)絡(luò)編程與web編程 1.1 網(wǎng)絡(luò)編程 1.2 web編程? 1.3 前后端交互的基本原理/

    2024年02月11日
    瀏覽(28)
  • Python-Python高階技巧:HTTP協(xié)議、靜態(tài)Web服務(wù)器程序開發(fā)、循環(huán)接收客戶端的連接請(qǐng)求

    Python-Python高階技巧:HTTP協(xié)議、靜態(tài)Web服務(wù)器程序開發(fā)、循環(huán)接收客戶端的連接請(qǐng)求

    當(dāng)前版本號(hào)[20231114]。 版本 修改說明 20231114 初版 1.1 網(wǎng)址的概念 網(wǎng)址又稱為URL,URL的英文全拼是(Uniform Resoure Locator),表達(dá)的意思是 統(tǒng)一資源定位符 ,通俗理解就是網(wǎng)絡(luò)資源地址。 URL地址:https://www.itcast.com/18/1122/10/E178J2O4000189FH.html 1.2 URL的組成 域名 : IP地址的別名 ,它是用

    2024年02月04日
    瀏覽(39)
  • 深入淺出Python:從零開始搭建自己的Web服務(wù)器

    第一部分:前言與環(huán)境準(zhǔn)備 1. 前言 隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的應(yīng)用都運(yùn)行在Web上,而Web服務(wù)器則成為了支撐這一切的關(guān)鍵。在本文中,我們將利用Python來創(chuàng)建自己的簡(jiǎn)易Web服務(wù)器。通過這個(gè)過程,你不僅可以深入了解Web服務(wù)器的工作原理,還能夠掌握Python的基礎(chǔ)知識(shí)。

    2024年02月03日
    瀏覽(92)
  • 用Windows自帶的Hyper搭建Linux(Centos7)服務(wù)器

    用Windows自帶的Hyper搭建Linux(Centos7)服務(wù)器

    首先準(zhǔn)備Centos7鏡像:下載地址:CentOS Mirrors List? ?點(diǎn)擊任意國內(nèi)鏡像地址進(jìn)行下載 前提:cpu已經(jīng)開啟虛擬化,win10版本為非家庭版 安裝Hyper-V:打開控制面板選擇程序,選擇程序和功能中的“啟動(dòng)或關(guān)閉Windows功能”,勾選Hyper-V后,點(diǎn)擊確定后系統(tǒng)會(huì)啟用并重啟系統(tǒng)?????

    2024年02月05日
    瀏覽(34)
  • windows服務(wù)器自帶IIS搭建網(wǎng)站并發(fā)布公網(wǎng)訪問【內(nèi)網(wǎng)穿透】

    windows服務(wù)器自帶IIS搭建網(wǎng)站并發(fā)布公網(wǎng)訪問【內(nèi)網(wǎng)穿透】

    轉(zhuǎn)載自遠(yuǎn)程源碼文章:【IIS搭建網(wǎng)站】本地電腦做服務(wù)器搭建web站點(diǎn)并公網(wǎng)訪問「內(nèi)網(wǎng)穿透」 在網(wǎng)上各種教程和介紹中,搭建網(wǎng)頁都會(huì)借助各種軟件的幫助,比如網(wǎng)頁運(yùn)行的Apache和Nginx、數(shù)據(jù)庫軟件MySQL和MSSQL之類,為方便用戶使用,還出現(xiàn)了XAMPP、PHPStudy、寶塔面板等等一系

    2023年04月11日
    瀏覽(108)
  • 〖Web全棧開發(fā)③〗—HTTP協(xié)議和靜態(tài)web服務(wù)器

    〖Web全棧開發(fā)③〗—HTTP協(xié)議和靜態(tài)web服務(wù)器

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開發(fā)專欄:《Web全棧開發(fā)》免費(fèi)專欄,歡迎閱讀! TCP (Transmission Control Protocol) 是在互聯(lián)網(wǎng)協(xié)議(IP)上的一種基于連接(面向連接)的傳輸層協(xié)議 。數(shù)據(jù)

    2024年02月05日
    瀏覽(21)
  • 如何使用Nginx搭建詳細(xì)的靜態(tài)文件服務(wù)器【經(jīng)典】

    Nginx是一種強(qiáng)大的Web服務(wù)器,可以用于托管靜態(tài)文件。本文將詳細(xì)介紹如何使用Nginx搭建一個(gè)靜態(tài)文件服務(wù)器,使您能夠輕松地瀏覽目錄、導(dǎo)航子目錄和文件,并通過瀏覽器下載文件。 以下是使用Nginx搭建靜態(tài)文件服務(wù)器的詳細(xì)步驟: 步驟1:安裝Nginx 首先,確保您已經(jīng)安裝了

    2024年02月08日
    瀏覽(94)
  • 使用CentOS搭建高性能靜態(tài)HTTP服務(wù)器

    使用CentOS搭建高性能靜態(tài)HTTP服務(wù)器

    在互聯(lián)網(wǎng)應(yīng)用中,靜態(tài)內(nèi)容是廣泛存在的,例如HTML頁面、圖片、視頻等。為了提供高效、穩(wěn)定和安全的靜態(tài)內(nèi)容服務(wù),我們可以使用CentOS來搭建高性能的靜態(tài)HTTP服務(wù)器。 1. 選擇合適的軟件 Nginx和Apache是兩個(gè)流行的HTTP服務(wù)器軟件。Nginx以其高效、輕量級(jí)和快速的性能而著稱,

    2024年01月23日
    瀏覽(19)
  • 使用Node.js手?jǐn)]一個(gè)建靜態(tài)Web服務(wù)器,內(nèi)部CV指南

    使用Node.js手?jǐn)]一個(gè)建靜態(tài)Web服務(wù)器,內(nèi)部CV指南

    文章里有全部代碼,也可以積分下載 操作步驟如上圖 文章結(jié)束 話說這個(gè)鍵盤真漂亮~~ 1.1 靜態(tài)Web服務(wù)器概念 我們通常稱 靜態(tài)Web服務(wù)器 為 靜態(tài)網(wǎng)站 ,其主要特征就是服務(wù)器上的所有內(nèi)容都是現(xiàn)成的,不需要后端做額外的處理。當(dāng)我們向靜態(tài)服務(wù)器發(fā)送網(wǎng)頁請(qǐng)求時(shí),服務(wù)器只

    2023年04月08日
    瀏覽(95)
  • 搭建web服務(wù)器和NFS服務(wù)器

    搭建web服務(wù)器和NFS服務(wù)器

    網(wǎng)站需求: 1.基于域名www.openlab.com可以訪問網(wǎng)站內(nèi)容為 welcome to openlab!!! 2.給該公司創(chuàng)建三個(gè)子界面分別顯示學(xué)生信息,教學(xué)資料和繳費(fèi)網(wǎng)站,基于www.openlab.com/student/ 網(wǎng)站訪問學(xué)生信息,www.openlab.com/data/網(wǎng)站訪問教學(xué)資料www.openlab.com/money/網(wǎng)站訪問繳費(fèi)網(wǎng)站。 3.要求 (1)學(xué)生

    2024年01月23日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包