Python:模拟客户端向服务端发送文件下载请求

需求:在客户端输入文件名,经由客户端将其文件名发送给服务端,服务端将文件内容返回给客户端,模拟客户端向服务端发送文件下载请求的工作内容

首先需要做好的准备工作如下:
环境准备

  • 在同一网段下的两台电脑(要求都配有python环境),同一网段可以理解为两台电脑接入同一wifi
  • 只有一台电脑的,可以搭设虚拟机进行模拟(要求都配有python环境)

确认好其中一台电脑的ip地址,将其作为服务端,
我是mac本,确认内容如下所示
在这里插入图片描述

我手里正好有两台电脑,因此将其中一台作为服务端,另一台作为客户端,进行如下代码的编写

server端

import socket,os

# 创建一个基于tcp的socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 绑定ip地址和端口号
s.bind(('192.168.1.104',9000))

# 监听
s.listen(128)

# 接受客户端发来的请求
client_socket,client_addr = s.accept()
data = client_socket.recv(1024).decode('utf8')

# 读取文件,返回给客户端
if os.path.isfile(data):
    print('读取文件,将文件内容返回给客户端')
    with open(data,'r',encoding = 'utf8') as file:
        content = file.read()
        client_socket.send(content.encode('utf8'))
else:
    print('文件不存在')

# 关闭socket
s.close()

client端

import socket

# 创建一个基于tcp的socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 连接服务ip地址及端口号
s.connect(('192.168.1.104',9000))

# 向服务端发送数据
file_name = input('PLEASE INPUT FILE NAME:')
s.send(file_name.encode('utf8'))

# 接受服务端返回的文件内容,并写入到文件
content = s.recv(1024).decode('utf8')
with open(file_name,'w',encoding='utf8') as file:
    file.write(content)

# 关闭socket
s.close()

猜你喜欢

转载自blog.csdn.net/weixin_42161670/article/details/114603900