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