Rust 每天一库系列 Ftp 库
基础的还不是很牢固,还是写点代码比较好
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] 如何将协议规范变成开源库系列文章之 WebSocket
这是系列文章的第一篇,也是非常重要的一篇,希望大家能读懂我想要表达的意思. 系列文章开篇概述 相对于其他编程语言来说,Python 生态中最突出的就是第三方库.任何一个及格的 Python 开发者都使 ...
- 如何将协议规范变成开源库系列之 WebSocket (一)
这是系列文章的第一篇,也是非常重要的一篇,希望大家能读懂我想要表达的意思. 一.系列文章开篇概述 相对于其他编程语言来说,Python 生态中最突出的就是第三方库.任何一个及格的 Python 开发者 ...
- 语言题库体型判断问题_1000道Python题库系列分享20(43道填空与判断题)
本期题目: 参考答案: 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章"可以快速查看分专题的文章列表,通过"最新资源"== ...
- Maven精选系列--私库搭建及使用
转载自 Maven精选系列--私库搭建及使用 为什么要使用私库 maven默认去远程中央仓库下载JAR包的,访问国外网络相当慢,如果团队每个人都去下载一遍无疑是网络的浪费,当然也可以添加国内的镜像,如 ...
- python小屋_1000道Python题库系列分享九(31道)
上期题目:1000道Python题库系列分享八(29道) 上期答案: 本期题目: ----------相关阅读---------- 教学课件 1900页Python系列PPT分享一:基础知识(106页 ...
- 1000道Python题库系列分享24(41个客观题,numpy专题)
封面图片:<Python程序设计基础(第2版)>,董付国,清华大学出版社 ============== 好消息:智慧树网APP"知到"中搜索"董付国" ...
- 1000道Python题库系列分享23(61个填空题)
封面图片:<玩转Python轻松过二级>,董付国,清华大学出版社 ================= 本期题目,参考答案在文末: 温馨提示 关注本公众号"Python小屋&quo ...
- 1000道Python题库系列分享
本文是汇总地址,推送了新的题库之后会在这里更新. 1000道Python题库系列分享一(17道) 1000道Python题库系列分享二(48道) 1000道Python题库系列分享三(30道) 100 ...
- 1000道Python题库系列分享20(43道填空与判断题)
本期题目: 参考答案: 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章"可以快速查看分专题的文章列表,通过"最新资源"== ...
最新文章
- node简单实现excel文件下载
- python字典{:4}_Python字典101:详细的视觉介绍
- 远程包含shell时,上传shell时所遇到一句话木马不能上传问题解决的办法(这里为单引号与双引号问题)
- 存储程序(1)——MYSQL
- python snmp采集交换机信息_网管交换机与非网管交换机的利弊介绍
- Linux下的 API Hook
- Admin.Admin/Login --- 后台项目中的管理员及登录模块
- 羞,Spring Bean 初始化/销毁竟然有这么多姿势
- PHP MySQL 数据字典生成器
- 三维CAD/CAM软件SINOVATION 10 中文注册版
- jQuery控制video视频(快进,回退,倍速播放等)
- 糗百网站服务器正在升级中,网站紧急升级中
- GO语言开源项目TOP 100
- DANDELION 病毒
- 悬挂式Notification 停留几秒后自动消失 且保留状态栏的通知(自定义消息)
- ppt中插入和删除动画
- 什么是华为云服务器?它有什么优点?
- 商铺选址“风水”是门学问 大数据解读一步差三市主因
- 一文8个步骤从0到1实现Python+Selenium自动化测试项目实战【建议收藏】
- python 仪表盘实现_使用python绘制一个仪表盘显示
热门文章
- 通过注册表开启“终端服务”
- CALayer的基本操作
- .net 中 GridViewRow使用字段名来访问数据,而不是使用索引
- 界面Hello world
- javascript中select的常用操作
- 站长之家html视频播放,HTML5视频发展状况
- windows程序设计 c语言,【教程】基于C语言的Windows编程入门
- 计算机论文图,【论文】计算机图像学
- 服务器挖chia用什么系统,Chia是什么?Chia挖矿服務器配置
- elementui table html,elementUI Table表格表头自定义