python就业班----http协议

    科技2024-07-05  64

    # http:超文本传输协议,基于tcp协议 """ 浏览器向服务器发送的请求格式如下: GET / HTTP/1.1 Host: 192.168.15.1:8080 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 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 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 服务器给浏览器回送的数据格式如下: HTTP/1.1 200 OK # http协议为1.1版本, Bdpagetype: 1 Bdqid: 0xb2c1702b000047f9 Cache-Control: private Connection: keep-alive Content-Encoding: gzip Content-Type: text/html;charset=utf-8 # 浏览器格式 Date: Tue, 06 Oct 2020 02:25:00 GMT # 服务器当前使时间 Expires: Tue, 06 Oct 2020 02:24:14 GMT Server: BWS/1.1 Set-Cookie: BDSVRTM=0; path=/ # 根据cookie追踪用户 Set-Cookie: BD_HOME=1; path=/ Set-Cookie: H_PS_PSSID=7513_32617_1451_32734_7542_32794_32706_32231_7516_7605_32116_32719_26350; path=/; domain=.baidu.com Strict-Transport-Security: max-age=172800 Traceid: 1601951100090399079412880699739242252281 X-Ua-Compatible: IE=Edge,chrome=1 Transfer-Encoding: chunked """ # 浏览器向服务器发送请求,至少包括 # GET / HTTP/1.1 # 服务器给浏览器发送数据,至少包括: # http/1.1 200 OK # <h1>hahha</h1> # 用python实现简单的http服务器:等待客户端的链接与请求,服务器不能想关闭就关闭 import socket # # # def service_client(new_socket): # """为这个客户端返回数据""" # # 1.接受浏览器发送过来的请求。即http请求 # # GET/HTTP/1.1 # #.... # request=new_socket.recv(1024) # print(request) # # # 2.返回http格式的数据给浏览器 # # 2.1 准备发送给浏览器的数据---header # response="HTTP/1.1 200 OK\r\n" # \r\n 表示换行 # response+="\r\n" # # 2.2 准备发送给浏览器的数据---body # response+="hahahaha" # new_socket.send(response.encode("utf-8")) # # # 关闭套接字 # new_socket.close() # # def main(): # """用来完成整体的控制""" # # 1.创建套接字 # tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # # # 2.绑定 # tcp_server_socket.bind(("",7890)) # # # 3.变为监听套接字 # tcp_server_socket.listen(128) # # while True: # # 4.等到新客户端的链接 # new_socket,client_addr=tcp_server_socket.accept() # # # 5.为这个客户端服务 # service_client(new_socket) # # 关闭监听套接字 # tcp_server_socket.close() # # if __name__=="__main__": # main() """ tcp三次握手:保证收发双方在收数据和发数据之间准备好资源。 四次挥手:断开客户端和服务器之间的链接 """ # import socket # # def service_client(new_socket): # """为这个客户端返回数据""" # # 1.接受浏览器发送过来的请求。即http请求 # # GET/HTTP/1.1 # #.... # request=new_socket.recv(1024) # print(request) # # # 2.返回http格式的数据给浏览器 # # 2.1 准备发送给浏览器的数据---header # response="HTTP/1.1 200 OK\r\n" # \r\n 表示换行 # response+="\r\n" # # 2.2 准备发送给浏览器的数据---body # response+="hahahaha" # f=open("./html/index.html","rb") # html_content=f.read() # f.close() # # # 将response header发送给浏览器 # new_socket.send(response.encode("utf-8")) # # 将response body发送给浏览器 # new_socket.send(html_content) # # # 关闭套接字 # new_socket.close() # # # def main(): # """用来完成整体的控制""" # # 1.创建套接字 # tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # # 设置当前服务器先close,即服务器端4次挥手后资源立即释放,这样就保证了下次运行程序时可以立即建立连接 # tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # # # 2.绑定 # tcp_server_socket.bind(("",7890)) # # # 3.变为监听套接字 # tcp_server_socket.listen(128) # # while True: # # 4.等到新客户端的链接 # new_socket,client_addr=tcp_server_socket.accept() # # # 5.为这个客户端服务 # service_client(new_socket) # # 关闭监听套接字 # tcp_server_socket.close() # # if __name__=="__main__": # main()
    Processed: 0.009, SQL: 8