Python编程该怎么实现socket文件传输?

在Python中实现基于socket的文件传输可以使用标准库中的socket模块。下面是一个简单的例子,演示了如何使用socket进行文件传输,其中一个作为服务端,另一个作为客户端。

1. 服务端代码:

import socket

def server():
    # 创建socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 绑定地址和端口
    server_address = ('127.0.0.1', 12345)
    server_socket.bind(server_address)

    # 监听连接
    server_socket.listen(1)
    print("等待客户端连接...")

    # 接受连接
    client_socket, client_address = server_socket.accept()
    print(f"接收来自 {client_address} 的连接")

    # 接收文件
    with open('received_file.txt', 'wb') as file:
        data = client_socket.recv(1024)
        while data:
            file.write(data)
            data = client_socket.recv(1024)

    print("文件接收完成")

    # 关闭连接
    client_socket.close()
    server_socket.close()

if __name__ == "__main__":
    server()

2. 客户端代码:

import socket

def client():
    # 创建socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 连接服务端
    server_address = ('127.0.0.1', 12345)
    client_socket.connect(server_address)
    print("连接到服务端")

    # 发送文件
    with open('file_to_send.txt', 'rb') as file:
        data = file.read(1024)
        while data:
            client_socket.send(data)
            data = file.read(1024)

    print("文件发送完成")

    # 关闭连接
    client_socket.close()

if __name__ == "__main__":
    client()

这个简单的例子中,服务端绑定地址和端口,监听连接,一旦有客户端连接,就接收文件并保存到received_file.txt。客户端连接服务端,读取本地的file_to_send.txt文件,将文件内容通过socket发送到服务端。

请注意,这个例子是基于阻塞式I/O的,实际生产环境中可能需要考虑使用多线程或异步I/O等机制来处理多个连接和提高并发性能。同时,要确保服务端和客户端的文件操作和socket通信都进行了适当的错误处理。

你可能感兴趣的:(服务器,linux,网络)