人工智能(PythonNet)—— TCP应用之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)—— 目录汇总



猜你喜欢

转载自blog.csdn.net/qq_27297393/article/details/80991337
今日推荐