基础的还不是很牢固,还是写点代码比较好

FTP 作为基础还是不错的

1. First build ftp server on windows

1.1 使用 python3 ftpd 服务库

pip install pyftpdlib

这个库使用来快速搭建简易的ftp服务,只是点对点的传输,只是为了测试,不要要求太多

官方有个 base_ftpd 的源码

import osfrom pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServerdef main():# Instantiate a dummy authorizer for managing 'virtual' usersauthorizer = DummyAuthorizer()# Define a new user having full r/w permissions and a read-only# anonymous userauthorizer.add_user('user', '12345',r'C:\Users\hongyu\Desktop\ftp', perm='elradfmwMT')authorizer.add_anonymous(os.getcwd())# Instantiate FTP handler classhandler = FTPHandlerhandler.authorizer = authorizer# Define a customized banner (string returned when client connects)handler.banner = "pyftpdlib based ftpd ready."# Specify a masquerade address and the range of ports to use for# passive connections.  Decomment in case you're behind a NAT.#handler.masquerade_address = '151.25.42.11'#handler.passive_ports = range(60000, 65535)# Instantiate FTP server class and listen on 0.0.0.0:2121address = ('127.0.0.1', 2121)server = FTPServer(address, handler)# set a limit for connectionsserver.max_cons = 256server.max_cons_per_ip = 5# start ftp serverserver.serve_forever()if __name__ == '__main__':main()

这个官方给的代码完全就可以使用’

python3 小知识

  • r"C:\ftp"表示原始字符串 这样就省略了 过多的反义字符的使用

稍稍改动下,加一个日志

#!/bin/env python
import os#限定类型使用的库
#开启相应的日志import typing
import loggingfrom pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServerdef main():authorizer = DummyAuthorizer()authorizer.add_user('user', '123456', r"C:\Users\hongyu\Desktop\ftp", perm='elradfmwMT')authorizer.add_anonymous(os.getcwd())handler = FTPHandlerhandler.authorizer = authorizerlogging.basicConfig(filename=r'C:\Users\hongyu\Desktop\ftp\ftp_server.log', level=logging.INFO)handler.banner = "Connected with Windows -- author HongDaYu"address = ('127.0.0.1', 21)server = FTPServer(address, handler)server.max_cons = 256server.max_cons_per_ip = 5server.serve_forever()if __name__ == '__main__':main()

pyftpdlib 使用 logging 作为 日志使用

直接作为脚本使用方便

测试结果 链接成功

Rust Ftp 客户端 的源代码

extern crate ftp;
use ftp::FtpStream;
use std::str;fn main() {print!("Ftp Client Work ... ...\n");let mut ftp_stream = FtpStream::connect("172.20.10.3:21").unwrap();let _ = ftp_stream.login("user", "123456").unwrap();print!("Current Path is {} \n", ftp_stream.pwd().unwrap()); //当前的目录let remote_file = ftp_stream.simple_retr("hello.txt").unwrap();// 常见的 获取数据, 不形成文本println!("Read file with contents {}\n",str::from_utf8(&remote_file.into_inner()).unwrap());let _ = ftp_stream.quit(); //Rust 退出 ftp 客户端
}

Rust 每天一库系列 Ftp 库相关推荐

  1. [连载 1] 如何将协议规范变成开源库系列文章之 WebSocket

    这是系列文章的第一篇,也是非常重要的一篇,希望大家能读懂我想要表达的意思. 系列文章开篇概述 相对于其他编程语言来说,Python 生态中最突出的就是第三方库.任何一个及格的 Python 开发者都使 ...

  2. 如何将协议规范变成开源库系列之 WebSocket (一)

    这是系列文章的第一篇,也是非常重要的一篇,希望大家能读懂我想要表达的意思. 一.系列文章开篇概述 相对于其他编程语言来说,Python 生态中最突出的就是第三方库.任何一个及格的 Python 开发者 ...

  3. 语言题库体型判断问题_1000道Python题库系列分享20(43道填空与判断题)

    本期题目: 参考答案: 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章"可以快速查看分专题的文章列表,通过"最新资源"== ...

  4. Maven精选系列--私库搭建及使用

    转载自 Maven精选系列--私库搭建及使用 为什么要使用私库 maven默认去远程中央仓库下载JAR包的,访问国外网络相当慢,如果团队每个人都去下载一遍无疑是网络的浪费,当然也可以添加国内的镜像,如 ...

  5. python小屋_1000道Python题库系列分享九(31道)

    上期题目:1000道Python题库系列分享八(29道) 上期答案: 本期题目: ----------相关阅读---------- 教学课件 1900页Python系列PPT分享一:基础知识(106页 ...

  6. 1000道Python题库系列分享24(41个客观题,numpy专题)

    封面图片:<Python程序设计基础(第2版)>,董付国,清华大学出版社 ============== 好消息:智慧树网APP"知到"中搜索"董付国" ...

  7. 1000道Python题库系列分享23(61个填空题)

    封面图片:<玩转Python轻松过二级>,董付国,清华大学出版社 ================= 本期题目,参考答案在文末: 温馨提示 关注本公众号"Python小屋&quo ...

  8. 1000道Python题库系列分享

    本文是汇总地址,推送了新的题库之后会在这里更新. 1000道Python题库系列分享一(17道) 1000道Python题库系列分享二(48道) 1000道Python题库系列分享三(30道) 100 ...

  9. 1000道Python题库系列分享20(43道填空与判断题)

    本期题目: 参考答案: 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章"可以快速查看分专题的文章列表,通过"最新资源"== ...

最新文章

  1. node简单实现excel文件下载
  2. python字典{:4}_Python字典101:详细的视觉介绍
  3. 远程包含shell时,上传shell时所遇到一句话木马不能上传问题解决的办法(这里为单引号与双引号问题)
  4. 存储程序(1)——MYSQL
  5. python snmp采集交换机信息_网管交换机与非网管交换机的利弊介绍
  6. Linux下的 API Hook
  7. Admin.Admin/Login --- 后台项目中的管理员及登录模块
  8. 羞,Spring Bean 初始化/销毁竟然有这么多姿势
  9. PHP MySQL 数据字典生成器
  10. 三维CAD/CAM软件SINOVATION 10 中文注册版
  11. jQuery控制video视频(快进,回退,倍速播放等)
  12. 糗百网站服务器正在升级中,网站紧急升级中
  13. GO语言开源项目TOP 100
  14. DANDELION 病毒
  15. 悬挂式Notification 停留几秒后自动消失 且保留状态栏的通知(自定义消息)
  16. ppt中插入和删除动画
  17. 什么是华为云服务器?它有什么优点?
  18. 商铺选址“风水”是门学问 大数据解读一步差三市主因
  19. 一文8个步骤从0到1实现Python+Selenium自动化测试项目实战【建议收藏】
  20. python 仪表盘实现_使用python绘制一个仪表盘显示

热门文章

  1. 通过注册表开启“终端服务”
  2. CALayer的基本操作
  3. .net 中 GridViewRow使用字段名来访问数据,而不是使用索引
  4. 界面Hello world
  5. javascript中select的常用操作
  6. 站长之家html视频播放,HTML5视频发展状况
  7. windows程序设计 c语言,【教程】基于C语言的Windows编程入门
  8. 计算机论文图,【论文】计算机图像学
  9. 服务器挖chia用什么系统,Chia是什么?Chia挖矿服務器配置
  10. elementui table html,elementUI Table表格表头自定义