设计简单的ftp客户端程序代码
时间: 2023-12-04 17:00:42 浏览: 48
设计一个简单的FTP客户端程序,可以连接到FTP服务器并进行文件传输。以下是代码的一个简单实现示例:
```python
import socket
import os
def ftp_client():
# 服务器信息
server_ip = '127.0.0.1'
server_port = 21
# 连接服务器
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((server_ip, server_port))
print('成功连接到服务器')
while True:
# 接收服务器的欢迎消息
welcome_msg = client_socket.recv(1024).decode()
print(welcome_msg)
# 用户登录
username = input('请输入用户名:')
client_socket.send(username.encode())
password = input('请输入密码:')
client_socket.send(password.encode())
# 接收登录结果
login_result = client_socket.recv(1024).decode()
if login_result != 'success':
print('登录失败')
client_socket.close()
return
print('登录成功')
print('1. 获取服务器文件列表')
print('2. 下载文件')
print('3. 上传文件')
print('4. 退出')
choice = input('请输入数字选择操作:')
if choice == '1':
client_socket.send(choice.encode())
file_list = client_socket.recv(1024).decode()
print('服务器的文件列表:')
print(file_list)
elif choice == '2':
client_socket.send(choice.encode())
filename = input('请输入要下载的文件名:')
client_socket.send(filename.encode())
file_data = client_socket.recv(1024)
if file_data.decode() == 'error':
print('文件下载失败')
else:
with open(filename, 'wb') as f:
f.write(file_data)
print('文件下载成功')
elif choice == '3':
client_socket.send(choice.encode())
filename = input('请输入要上传的文件名:')
if not os.path.exists(filename):
print('文件不存在')
continue
client_socket.send(filename.encode())
with open(filename, 'rb') as f:
file_data = f.read()
client_socket.sendall(file_data)
print('文件上传成功')
elif choice == '4':
client_socket.send(choice.encode())
client_socket.close()
print('已退出FTP客户端')
return
else:
print('无效的选择')
ftp_client()
```
这个简单的FTP客户端程序实现了以下功能:
- 通过创建一个TCP套接字连接到FTP服务器;
- 输入用户名和密码进行登录验证;
- 提供菜单供用户选择操作:获取服务器文件列表、下载文件、上传文件、退出;
- 根据用户的选择进行相应的操作;
- 文件的传输使用二进制模式,可下载和上传任意类型的文件。