Python设计迷你ftp服务器
时间: 2023-11-29 15:45:39 浏览: 95
以下是Python实现简单的FTP服务器的代码示例:
```python
import socketserver
import os
class MyFtpServer(socketserver.BaseRequestHandler):
def handle(self):
print("Connected by:", self.client_address)
while True:
self.data = self.request.recv(1024).strip()
if not self.data:
print("Connection closed:", self.client_address)
break
command = self.data.decode().split()[0]
if command == "list":
file_list = os.listdir()
self.request.sendall("\n".join(file_list).encode())
elif command == "get":
file_name = self.data.decode().split()[1]
if os.path.isfile(file_name):
with open(file_name, "rb") as f:
file_data = f.read()
self.request.sendall(file_data)
else:
self.request.sendall("File not exists!".encode())
elif command == "put":
file_name = self.data.decode().split()[1]
with open(file_name, "wb") as f:
file_data = self.request.recv(1024)
while file_data:
f.write(file_data)
file_data = self.request.recv(1024)
self.request.sendall("Upload success!".encode())
else:
self.request.sendall("Invalid command!".encode())
if __name__ == "__main__":
ip_port = ("127.0.0.1", 8888)
server = socketserver.ThreadingTCPServer(ip_port, MyFtpServer)
server.serve_forever()
```
该FTP服务器支持以下三个命令:
- list:列出当前目录下的所有文件和文件夹。
- get [file_name]:下载指定文件。
- put [file_name]:上传指定文件。
请注意,该FTP服务器仅支持单用户连接,且不支持用户认证和加密传输。
阅读全文