欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模拟客户端,向服务器发送请求,获取服务器响应

程序员文章站 2022-06-06 09:49:19
...

本题做法:列出整体思路,再去优化。

import socket

# 创建socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#建立服务器连接
client_socket.connect(('tlias3.boxuegu.com', 80))

# 拼接请求报文,模拟客户端发起请求
# 请求行
request_line = 'GET / HTTP/1.1\r\n'
# 请求头
request_head = 'Host: www.baidu.com\r\n'

request_head += 'Connection: close\r\n'
# 拼接请求报文
request_data = request_line + request_head + '\r\n'

# 发送请求
client_socket.send(request_data.encode())

# 接收服务器的响应数据
response_data = b''
# 服务器在回传数据 时,可能不是一次性将数据发送回来,所以要一直接收
while True:
    # 循环接收数据,因为服务器的数据可以不是一次性发过来的
    recv_data = client_socket.recv(1024)
    # 如果有数据就进行拼接
    if recv_data:
        response_data += recv_data
        # resp_date = resp_date + recv_data
    else:
        break

# 解码
response_data = response_data.decode()

# 分割
responses = response_data.split('\r\n\r\n',1)

# 遍历显示
for s in responses:
    print(s)

# 关闭连接
client_socket.close()

有见解的朋友欢迎下方留言探讨!!!

相关标签: Web 客户端