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