天天看点

人工智能(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)—— 目录汇总