使用 Python 实现 TCP 文件传输

在网络编程中,TCP(传输控制协议)是一个常用的协议,用于在网络中可靠地传输数据。本文将指导你使用 Python 实现文件的 TCP 传输。我们将创建一个简单的客户端和服务器来完成这一任务。下面是整个实现流程的概述:

流程概述

步骤 说明
1 创建 TCP 服务器
2 创建 TCP 客户端
3 服务器等待客户端连接
4 客户端发送文件
5 服务器接收并保存文件
6 关闭连接

详细步骤

1. 创建 TCP 服务器

首先,我们需要创建一个简单的 TCP 服务器,监听特定端口,等待客户端连接。

import socket

# 创建 TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定 IP 地址和端口
server_socket.bind(('0.0.0.0', 12345))

# 开始监听
server_socket.listen(1)
print("服务器等待客户端连接...")
  • socket.socket():创建一个 socket 对象
  • bind():将 socket 绑定到指定的 IP 和端口
  • listen():开始监听连接请求
2. 创建 TCP 客户端

接下来,我们需要创建一个客户端,连接到服务器。

import socket

# 创建 TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
client_socket.connect(('127.0.0.1', 12345))
print("客户端已连接到服务器")
  • connect():用于连接到指定地址的服务器
3. 服务器等待客户端连接

我们可以使用 accept() 方法来等待客户端连接。

conn, addr = server_socket.accept()
print(f"客户端 {addr} 已连接")
  • accept():接受连接请求并返回一个新的 socket 对象和客户端地址
4. 客户端发送文件

客户端需要读取文件并将其发送到服务器。

filename = 'example.txt'  # 需要发送的文件
with open(filename, 'rb') as file:
    file_data = file.read()
    client_socket.sendall(file_data)
    print(f"文件 {filename} 已发送")
  • open():打开文件,'rb' 表示以二进制格式读取
  • sendall():发送数据到服务器
5. 服务器接收并保存文件

服务器接收到文件后,将其保存到本地。

with open('received_file.txt', 'wb') as file:
    while True:
        data = conn.recv(1024)  # 接收数据
        if not data:
            break  # 如果没有数据,退出循环
        file.write(data)  # 写入文件
    print("文件已接收并保存")
  • recv():接收指定字节数的数据
6. 关闭连接

在文件传输完成后,客户端和服务器需要关闭各自的连接。

client_socket.close()  # 客户端关闭
conn.close()  # 服务器关闭
server_socket.close()  # 服务器关闭

关系图

下面是使用 mermaid 语法绘制的关系图。

erDiagram
    CLIENT ||--o{ CONNECTION : connects
    SERVER ||--o{ CONNECTION : accepts
    FILE ||--o{ CONNECTION : transfers

数据流量分布

我们可以通过饼图展示数据流量分布,比如不同阶段的流量占比。

pie
    title 数据流量分布
    "文件传输": 70
    "连接建立": 20
    "关闭连接": 10

结尾

通过本文,你已经学会了如何使用 Python 实现 TCP 文件传输。这个实现展示了如何使用网络编程的基本知识,包括创建服务器和客户端、数据的发送与接收。希望这篇文章能为你今后的学习和开发提供帮助!如果你有任何问题,欢迎随时提问!