Python: simula que el cliente envía una solicitud de descarga de archivo al servidor

Requisitos: Ingrese el nombre del archivo en el cliente y envíe el nombre del archivo al servidor a través del cliente. El servidor devuelve el contenido del archivo al cliente, simulando el contenido de trabajo del cliente enviando una solicitud de descarga de archivo al servidor.

Los primeros preparativos que deben realizarse son los siguientes:
Preparación ambiental

  • Dos computadoras bajo el mismo segmento de red (ambas deben estar equipadas con un entorno Python), el mismo segmento de red puede entenderse como dos computadoras que acceden al mismo wifi.
  • Si solo hay una computadora, puede configurar una máquina virtual para la simulación (requiere un entorno de Python)

Confirme la dirección IP de una de las computadoras y úsela como servidor.
Soy un mac, y el contenido de la confirmación es el siguiente
Inserte la descripción de la imagen aquí

Tengo exactamente dos computadoras en mi mano, así que uso una como servidor y la otra como cliente, y escribo el siguiente código

lado del servidor

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()

lado del cliente

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()

Supongo que te gusta

Origin blog.csdn.net/weixin_42161670/article/details/114603900
Recomendado
Clasificación