如何使用python socket向服务器传送文件

socket库来发送文件。以下是一个简单的例子,展示了如何使用TCP socket发送文件给服务器:客户端代码(发送文件):
import socket
import os
# 设置服务器的IP地址和端口
SERVER_ADDRESS = ('127.0.0.1', 12345)
FILE_TO_SEND = 'example.txt' # 要发送的文件路径
# 创建一个TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
sock.connect(SERVER_ADDRESS)
try:
# 打开文件准备发送
with open(FILE_TO_SEND, 'rb') as file:
file_content = file.read()
# 发送文件的大小
sock.sendall(len(file_content).to_bytes(4, 'big'))
# 发送文件内容
sock.sendall(file_content)
finally:
# 关闭连接
sock.close()服务器端代码(接收文件):
import socket
# 设置服务器的IP地址和端口 (注意这里是本机的地址和端口)
SERVER_ADDRESS = ('127.0.0.1', 12345)
FILE_TO_RECEIVE = '/www/hao366.net/received_example.txt' # 接收文件的路径
# 创建一个TCP/IP socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server.bind(SERVER_ADDRESS)
# 监听客户端连接
server.listen(1)
print(f'Listening on {SERVER_ADDRESS}')
# 接受客户端连接
client_connection, client_address = server.accept()
print(f'Connection from {client_address} has been established.')
try:
# 接收文件大小
file_size = int.from_bytes(client_connection.recv(4), 'big')
# 接收文件内容
received_data = b''
while len(received_data) < file_size:
data = client_connection.recv(1024)
if not data:
break
received_data += data
# 将接收到的数据写入文件
with open(FILE_TO_RECEIVE, 'wb') as file:
file.write(received_data)
finally:
# 关闭连接
client_connection.close()
server.close()确保在运行服务器代码之前启动服务器,并且服务器正在监听指定的端口。客户端代码连接到服务器,发送文件内容。服务器接收文件内容,并将其保存到指定的文件中。




















