【python练习】基于socket的FTP程序 v1.1.0(支持并发)

增加功能

1.在FTP(1.0.0)的基础上,支持了多并发的功能
2.允许配置最大并发数,比如允许只有10个并发用户

程序功能:

本程序模拟实现了一个FTP程序:
1.程序分为客户端和服务端
2.用户可以登录和注册账号,登录密码有MD5加密
3.每个用户有自己的家目录 ,且只能访问自己的家目录
4.用户可以随意切换目录(仅限自己的家目录)
5.允许用户查看当前目录下文件
6.允许上传和下载文件,保证文件一致性(md5),(不允许下载/上传文件夹,会出现不可恢复bug,用户配置文件需要重置。时间原因没有加判断)
7.文件传输过程中显示进度条
8.支持文件上传、下载的断点续传

测试:

数据为空,需要手动创建添加
1.需要自行注册账号
2.本地上传的文件,应放在client\db\用户名\uploads中
3.下载的文件会自动存储在client\db\用户名\downloas中
4.不能下载/上传文件夹,会出现不可恢复bug

程序结构:

仅在core下添加了MyThreadPool.py

FTP/
└── ├── README
    ├── client # 客户端程序目录
    └── server # 服务端程序目录
FTP/client/
└── ├── conf # 配置文件
    │   ├── init.py
    │   └── settings.py
    ├── core # 主要程序逻辑都
    │   ├── init.py
    │   ├── login.py        # 登陆模块
    │   ├── main.py         # 主逻辑交互程序
    │   └── register.py     # 注册模块
    ├── db #用户数据存储的地方
    │    └── disk # 存放各用户上传\下载文件
    │       ├── 用户名文件1 # 用户名文件
    │       │       ├── downloads # 下载的文件存放目录
    │       │       └── uploads # 需要上传的文件目录
    │       └── 用户名文件2 # 用户名文件
    │               ├── downloads # 下载的文件存放目录
    │               └── uploads # 需要上传的文件目录
    └── FTP_client # client端程序主入口
FTP/server/
└── ├── conf # 配置文件
    │   ├── init.py
    │   └── settings.py
    ├── core # 主要程序逻辑都
    │   ├── init.py
    │   ├── logger.py       # 日志记录模块
    │   ├── login.py        # 登陆模块
    │   ├── main.py         # 主逻辑交互程序
    │   ├── MyThreadPool.py # 线程池
    │   └── register.py     # 注册模块
    ├── db #用户数据存储的地方
    │   ├── accounts.ini  # 用户配置文件,存放账号、密码(MD5)
    │   └── disk # 存放各用户上传\下载文件
    │        ├── 用户名文件1 # 用户名文件
    │        │       ├── downloads # 下载的文件存放目录
    │        │       └── uploads # 需要上传的文件目录
    │        └── 用户名文件2 # 用户名文件
    │                ├── downloads # 下载的文件存放目录
    │                └── uploads # 需要上传的文件目录
    └── logs #日志目录
    │   ├── init.py
    │   └── access.log #用户访问和操作的相关日志
    └── FTP_server # server端程序主入口

原文地址:https://www.cnblogs.com/q1ang/p/9610181.html

时间: 2024-08-01 01:08:34

【python练习】基于socket的FTP程序 v1.1.0(支持并发)的相关文章

Python:socket实现ftp程序

刚开始学习socket编程,还不是特熟练,码了好长时间,中间遇到许多问题,记录一下用socketserver写ftp server端: 1 #!/usr/bin/env python 2 3 import socketserver,os 4 5 class FTP(socketserver.BaseRequestHandler): 6 def handle(self): 7 def clientsend(filename): 8 f = open('/ftp/%s' %filename,'w')

C语言 linux环境基于socket的简易即时通信程序

转载请注明出处:http://www.cnblogs.com/kevince/p/3891033.html   By Kevince 最近在看linux网络编程相关,现学现卖,就写了一个简易的C/S即时通信程序,代码如下: head.h 1 /*头文件,client和server编译时都需要使用*/ 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <sys/types.h> 5 #include <sys

python之FTP程序(支持多用户在线)

转发注明出处:http://www.cnblogs.com/0zcl/p/6259128.html,这次博客写了很久~~ 一.需求 1. 用户加密认证 (完成)2. 允许同时多用户登录 (完成)3. 每个用户有自己的家目录 ,且只能访问自己的家目录(完成)4. 对用户进行磁盘配额,每个用户的可用空间不同(完成)5. 允许用户在ftp server上随意切换目录cd(完成)6. 允许用户查看当前目录下文件ls(完成)7. 允许上传put和下载get文件(完成),保证文件一致性(此需求不做)8. 文

Python开发程序:支持多用户在线的FTP程序

作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 允许用户查看当前目录下文件 允许上传和下载文件,保证文件一致性 文件传输过程中显示进度条 附加功能:支持文件的断点续传(仅下载) 程序 1.最最重要的readme: ### 作者介绍: * author:lzl ### 博客地址: * http://www.cnblogs.c

基于Socket的UDP发包程序

UDP(User Datagram Protocol,用户数据报协议)是在互联网中常用的传输层协议,该协议提供了向另一用户程序发送的消息的最简便的协议机制.与TCP一样,其默认的下层协议是IP.UDP是面向操作的,不提供提交和复制保护,因此不能保证数据的可靠性传输.UDP一般用在可靠性较高的局域网中. .NET 下可使用Socket 类编写基于UDP的网络程序,只要在创建Socket时将构造函数函数的第三个参数选为枚举值ProtocolType.Udp即可.此外,.NET的System.Net.

基于Linux C的socket抓包程序和Package分析 (一)

 测试运行平台:CentOS 6.5发行版,内核版本3.11 1. Linux抓包源程序 在OSI七层模型中,网卡工作在物理层和数据链路层的MAC子层. 进行网络通信时,源主机通过socket(或其它)应用程序产生IP报文,经过各个OSI层层封装,数据包以Ethernet帧的形式进入物理层.Ethernet帧包含源主机地址.IP报文.目标地址(IP地址.端口号或映射的6字节MAC地址)和需要传送到目标主机的其它信息. 目标的MAC地址是哪里来的呢?这牵扯到一个ARP协议(介乎于网络层和数据链

Python核心编程(第3版)-客户端FTP程序示例

cat getLatestFTP.py #!/usr/bin/python import ftplib import os import socket HOST = 'ftp.mozilla.org' DIRN = 'pub/mozilla.org/webtools' FILE = 'bugzilla-LATEST.tar.gz' def main():     try:         f = ftplib.FTP(HOST)     except (socket.error,socket.g

基于win32的socket编程及程序实现

初步研究了win32平台的Windows Sockets,它是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用.包括流式套接字(提供面向连接.可靠的数据传输服务,数据无差错.无重复的发送,且按发送顺序接收.)和数据报套接字(提供无连接服务.数据包以独立包形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱.).原始套接字. CS模型:在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户

部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0)

部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0) 部署Bookinfo示例程序 在下载的Istio安装包的samples目录中包含了示例应用程序. Bookinfo应用 部署一个样例应用,它由四个单独的微服务构成,用来演示多种 Istio 特性.这个应用模仿在线书店的一个分类,显示一本书的信息.页面上会显示一本书的描述,书籍的细节(ISBN.页数等),以及关于这本书的一些评论. Bookinfo 应用分为四个单独的微服务: productpage