欢迎访问宙启技术站
智能推送

Python中如何通过Client()类发送和接收文件

发布时间:2023-12-29 00:28:34

在Python中,可以使用Client类来发送和接收文件。Client类是socket模块中的一个类,用于创建一个客户端连接。

首先,我们需要导入socket模块,然后创建一个Client对象并连接到服务器。

import socket

# 创建一个Client对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
server_ip = '127.0.0.1'  # 服务器IP地址
server_port = 12345  # 服务器端口号
client.connect((server_ip, server_port))

发送文件的过程中,我们可以使用sendall()方法来发送文件的内容。

# 打开待发送的文件
file_path = 'file.txt'  # 文件路径
with open(file_path, 'rb') as file:
    # 读取文件内容并发送
    file_data = file.read()
    client.sendall(file_data)

接收文件的过程中,我们可以使用recv()方法来接收文件的内容。recv()方法的参数指定了每次接收的最大字节数。

# 接收文件内容
file_data = b''  # 保存文件内容
buffer_size = 4096  # 缓冲区大小
while True:
    # 每次接收指定字节的数据
    data = client.recv(buffer_size)
    if not data:
        # 数据接收完毕
        break
    file_data += data

接收完文件后,我们可以将其保存到本地。

# 保存接收到的文件
save_path = 'received_file.txt'  # 保存路径
with open(save_path, 'wb') as file:
    # 写入文件内容
    file.write(file_data)

完整的发送和接收文件的例子如下:

import socket

# 创建一个Client对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
server_ip = '127.0.0.1'  # 服务器IP地址
server_port = 12345  # 服务器端口号
client.connect((server_ip, server_port))

# 打开待发送的文件
file_path = 'file.txt'  # 文件路径
with open(file_path, 'rb') as file:
    # 读取文件内容并发送
    file_data = file.read()
    client.sendall(file_data)

# 接收文件内容
file_data = b''  # 保存文件内容
buffer_size = 4096  # 缓冲区大小
while True:
    # 每次接收指定字节的数据
    data = client.recv(buffer_size)
    if not data:
        # 数据接收完毕
        break
    file_data += data

# 保存接收到的文件
save_path = 'received_file.txt'  # 保存路径
with open(save_path, 'wb') as file:
    # 写入文件内容
    file.write(file_data)

# 关闭连接
client.close()

以上就是如何通过Client类发送和接收文件的方法,其中file.txt为待发送的文件,received_file.txt为接收到的文件。你可以根据需要修改文件路径和服务器的IP地址和端口号。在实际使用时,需要确认服务器端的接收逻辑是否与此一致,并进行相应的调整。