http协议----模拟浏览器与服务器

(1)服务器模拟----即简单的TCP套接字(服务器端)的连接,需要初始化套接字属性---->获取客户端连接---->接收浏览器数据---->关闭客户端套接字---->关闭服务器套接字

import socket
def main():
    '''模拟一个web服务器'''
    #初始化服务器属性
    server_soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    server_soc.bind(('',1315))
    server_soc.listen(128)

    #获取客户端链接
    print('正在等待客户端链接...')
    client_soc ,client_addr = server_soc.accept()

    #接收浏览器数据
    recv_msg = client_soc.recv(1024)
    print(recv_msg)

    #关闭客户端套接字
    client_soc.close()

    #关闭套接字
    server_soc.close()

if __name__ == '__main__':

    main()

此时服务器接收到的结果为:

(2)模拟浏览器----即简单的TCP套接字(客户端)的连接,即创建客户端(浏览器)套接字---->连接服务器---->发送请求头给服务器---->准备接收服务器返回的数据---->将服务器返回的数据保存---->关闭客户端(浏览器)套接字

import socket

def main():
    '''模拟浏览器来链接服务器'''
    #创建客户端套接字
    client_soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    #链接服务器
    client_soc.connect(('www.baidu.com',80))

    #发送请求头给服务器
    request_line = 'GET / HTTP/1.1\r\n'
    request_head = 'Host:www.baidu.com\r\n'
    request = request_line + request_head + '\r\n'
    client_soc.send(request.encode()) #使用encode进行编码,将字符串转化为二进制

    #准备接手服务器返回的信息
    client_msg = client_soc.recv(1024*4)
    print(client_msg)

    #将服务器发送的消息保存
    with open('test.html','wb') as file:
        file.write(client_msg)

    #关闭客户端套接字
    client_soc.close()

if __name__ == '__main__':

    main()

此时服务器(网络调试助手)接收到的结果为:


基本符合基于TCP协议的http协议要求,可以简单理解.

猜你喜欢

转载自blog.csdn.net/wpb74521wrf/article/details/80402269