请用python实现一个基于客户/服务器的网络文件传输程序。传输层使用TCP。 交互过程 1) 客户端从用户输入获得待请求的文件名。 2) 客户端向服务器端发送文件名。 3) 服务器端收到文件名后,传输文件。 4) 客户端接收文件,重命名并存储在硬盘。
时间: 2024-05-15 07:19:52 浏览: 43
file-transfer-python:一个使用 UDP 和 TCP 的基于客户端 - 服务器的文件传输程序,用 Python 编写
以下是一个基于Python的客户端/服务器端网络文件传输程序的示例代码。请注意,代码仅供参考,实际应用时可能需要进行修改和优化。
服务器端代码:
```
import socket
import os
# 服务器IP地址和端口号
SERVER_IP = '127.0.0.1'
SERVER_PORT = 8888
# 创建TCP套接字,并绑定IP地址和端口号
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((SERVER_IP, SERVER_PORT))
# 开始监听客户端连接
server_socket.listen(1)
print('Server started and listening on %s:%d' % (SERVER_IP, SERVER_PORT))
while True:
# 接受客户端连接请求,返回一个新的套接字和客户端地址
conn, addr = server_socket.accept()
print('Connected by', addr)
# 接收客户端发送的文件名
filename = conn.recv(1024).decode()
print('File name:', filename)
# 检查文件是否存在
if os.path.isfile(filename):
# 打开文件并发送数据
with open(filename, 'rb') as f:
data = f.read(1024)
while data:
conn.send(data)
data = f.read(1024)
print('File sent successfully')
else:
print('File not found')
# 关闭连接
conn.close()
```
客户端代码:
```
import socket
# 服务器IP地址和端口号
SERVER_IP = '127.0.0.1'
SERVER_PORT = 8888
# 创建TCP套接字,并连接服务器端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((SERVER_IP, SERVER_PORT))
# 从用户输入获得待请求的文件名
filename = input('Enter file name: ')
# 向服务器端发送文件名
client_socket.send(filename.encode())
# 接收文件数据并保存到硬盘
with open('received_' + filename, 'wb') as f:
data = client_socket.recv(1024)
while data:
f.write(data)
data = client_socket.recv(1024)
print('File received and saved successfully')
# 关闭连接
client_socket.close()
```
阅读全文