我们需要了解Python中的socket库,socket库提供了一种在计算机之间进行通信的方法。在这篇文章中,我们将介绍如何使用Python的socket库实现客户端和服务端之间的文件传输和图片传输。
服务端
服务端主要负责监听客户端的连接请求,接收客户端发送的文件或图片,并将接收到的文件或图片保存到本地。
- 导入所需的库:
import socket
import os
import time
CopyCopy
- 创建一个TCP套接字并绑定到指定端口:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
CopyCopy
- 监听客户端的连接请求:
server_socket.listen(5)
CopyCopy
- 等待客户端连接:
client_socket, client_address = server_socket.accept()
print(f'客户端 {client_address} 已连接')
CopyCopy
- 接收客户端发送的文件或图片:
while True:
data = client_socket.recv(1024)
if not data:
break
with open('received_data.jpg', 'wb') as f:
f.write(data)
print(f'已接收 {os.path.getsize('received_data.jpg')} 字节的数据')
CopyCopy
- 关闭套接字并退出循环:
client_socket.close()
server_socket.close()
CopyCopy
客户端
客户端主要负责连接服务端,发送文件或图片,并接收服务端返回的确认信息。
- 导入所需的库:
import socket
import os
import time
CopyCopy
- 创建一个TCP套接字并连接到服务端:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
CopyCopy
- 发送文件或图片:
with open('image.jpg', 'rb') as f:
data = f.read()
client_socket.sendall(data)
print(f'已发送 {os.path.getsize('image.jpg')} 字节的数据')
CopyCopy
- 等待服务端确认:
data = client_socket.recv(1024)
print(f'接收到服务端消息: {data}')
CopyCopy
- 关闭套接字并退出循环:
client_socket.close()
CopyCopy
这样,客户端和服务端就可以实现文件的传输和图片的传输了。请注意,在实际应用中,您可能需要对代码进行一些修改,例如使用更安全的传输方式,处理传输错误等。