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

论坛 期权论坛 脚本     
匿名技术用户   2020-12-23 14:07   82   0

(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协议要求,可以简单理解.

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP