模拟客户端,向服务器发送请求,获取服务器响应
程序员文章站
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()
有见解的朋友欢迎下方留言探讨!!!