天天看點

人工智能(PythonNet)—— TCP應用之HTTP傳輸一、HTTP概念        二、HTTP伺服器簡要模型三、附錄:目錄

        HTTP,超文本傳輸協定(HyperText Transfer Protocol),屬于應用層協定;主要用于網頁的擷取(基于網站的資料傳輸),資訊的傳遞(基于http協定的資料傳輸)。

一、HTTP概念       

    1、HTTP的特點

            a、應用層協定,傳輸層使用tcp傳輸

            b、簡單靈活,和多種語言對接友善

            c、無狀态協定,不記錄使用者的通信内容

            d、成熟穩定 http1.1

    2、HTTP的工作模式

            * 使用http雙方均遵循http協定規定發送接收消息體

            * 請求方,根據協定組織請求内容發送給對方

            * 服務方,收到内容按照協定解析

            * 服務方,将回複内容按照協定組織發送給請求方

            * 請求方,收到回複根據協定解析

    3、HTTP請求(Request)

            請求格式:

                    請求行

                    請求頭

                    空行

                    請求體

            a、請求行

                    請求種類    請求内容    協定版本

                    eg:

                          GET    /    HTTP/1.1

                    請求種類:

                            GET           擷取網絡資源

                            POST         送出一定的附加資料,得到傳回結果

                            HEAD         擷取響應頭

                            PUT            更新伺服器資源

                            DELETE       删除伺服器資源

                            CONNECT  預留

                            TRACE        測試

                            OPTIONS   擷取伺服器性能

            b、請求頭

                    對請求内容的具體描述

                    以鍵值對的形式對請求資訊進行描述

                    eg:

                         Accept: text/html

                         Accept-Encoding: gzip, deflate, br

                         Accept-Language: zh-CN,zh;q=0.9

                         Cache-Control: max-age=0

                         Connection: keep-alive

            c、請求體  

                   送出具體的請求參數

    4、HTTP響應(Response)   

                響應格式:

                        響應行

                        響應頭

                        空行

                        響應體

            a、響應行

                    回報具體的響應情況

                    版本資訊     響應碼    附加資訊

                    eg:

                          HTTP/1.1      200        OK

                    響應碼 :

                                1xx   提示資訊 表示請求已經接受

                                2xx   響應成功

                                3xx   響應需要重新請定向

                                4xx   用戶端錯誤

                                5xx   伺服器錯誤

                    常見響應碼 :

                                200   成功

                                404   請求頁面不存在

                                401   沒有通路權限

                                500   伺服器發生未知錯誤

                                503   伺服器暫時無法執行

            b、響應頭   

                    對響應資訊的具體描述

                    eg:

                          Cache-Control: private

                          Connection: Keep-Alive

            c、響應體   

                    将客戶想要的内容進行傳回

二、HTTP伺服器簡要模型

    1、tcp應用:http傳輸

from socket import * 

#處理請求,傳回響應
def handleClient(connfd):
    print("Connect from",connfd.getpeername())
    request = connfd.recv(4096)

    #按行進行分割
    requestHeadlers = request.splitlines()
    for line in requestHeadlers:
        print(line)

    #無論什麼請求給出相同的響應
    try:
        f = open("./index.html")
    except IOError:
        response = "HTTP/1.1  404  not found\r\n"
        response += '\r\n'
        response += "===Sorry,The page not found==="
    else:
        response = "HTTP/1.1  200  OK\r\n"
        response += '\r\n'
        for i in f:
            response += i 
    finally:
        connfd.send(response.encode())
    connfd.close() 

#網絡連結控制流程
def main():
    sockfd = socket()
    sockfd.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    sockfd.bind(('0.0.0.0', 8000))
    sockfd.listen(5)
    while True:
        print("Listen to the port 8000.....")
        connfd, addr = sockfd.accept()
        #處理具體用戶端請求
        handleClient(connfd) 

if __name__ == "__main__":
    main()
           

        說明:

                sockfd.bind(('0.0.0.0', 8000)),可以在區域網路中任何電腦通路此伺服器;

                sockfd.bind(('127.0.0.1', 8000))和sockfd.bind(('localhost', 8000)),隻能在本機進行通路。

    2、index.html檔案

<!doctype html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Document</title>
	</head>
	<body>
		這是一個網頁
	</body>
</html>
           

        說明:同http伺服器代碼放在同一個目錄下

三、附錄:目錄

        人工智能(PythonNet)—— 目錄彙總