python 3异步tftp服务器。

py3tftp的Python项目详细描述


#py3tftp

py3tftp是用python 3.5编写的异步[tftp][1]服务器。它是为与python 3一起工作的纯粹乐趣而编写的,并为rrq实现了[rfc 1350][2](邮件模式除外)、[rfc 2347][3](选项)、[rfc 2348][4](blksize选项)、[rfc 2349][5](超时,tsize)和[rfc 7440][10](windowsize)。此外,它还支持块号翻滚,因此任何大小的文件都可以进行传输。

它确实遵守了足够的标准,在现实生活中非常有用。

(3.5+)
-[附加到异常的回溯][9]-呜!
-字符串现在是字节,因为所有文本都是unicode

在一个有敏感文件的地方!

tftp没有安全功能,除了它的简单性之外:
-它不会覆盖文件。
-不会创建不存在的目录。
-不能在它运行的目录之外进行写入。

````
用法:py3tftp[-h][--主机主机][-p端口][--ack timeout ack_timeout]
[--超时超时][-l文件日志][-v][--version]


可选参数:
-h,--帮助显示此帮助消息并退出
--服务器将侦听的接口的主机IP。
默认值:0.0.0
-p端口,--服务器将侦听的端口端口端口。默认值:9069。tftp
标准兼容端口:69-需要超级用户
权限。
--确认超时确认超时
锁定步骤的每个确认超时。默认值:0.5.
--在服务器放弃传输并关闭连接之前超时超时。默认值:3.
-l file_log,--file log file_log
将输出附加到日志文件。
-v,--verbose启用调试级别日志。
--version
````

代码很混乱,因为它应该被丢弃。

```
` basetftpserverprotocol"调度在IO循环上,该循环侦听传入的TFTP请求,并决定在IO循环上调度哪种‘basetftpprotocol’来处理传入的请求。

请求。当请求进入时,它选择"wrqprotocol"或"rrqprotocol"在io循环中创建任务,并在实例化时将请求传递给所选协议。从那时起,实例化的协议处理与客户端的所有通信,tftpserverprotocol返回到侦听请求。

[Py3Tftp RRQ流程图](tftp_graph.png)


扩展Py3Tftp就像:

-子类化"basetftpServer协议",主要是实现"select_protocol"方法来选择自定义协议。
-子类化"rrqprotocol"或"wrqprotocol"来实现标准wrq和rrq请求的自己的逻辑(新选项、文件处理等),或者…
-子类化"basetftpprotocol"来实现自己的逻辑自定义请求类型的逻辑。

-~~修复一个blksize错误,即:如果传输1000字节长的文件并将blksize设置为1000字节,服务器将不会确认它。~~~
-~~从协议类中拉出文件读写器~~。
-~~从RFC 2349中添加tsize ~~(由schrd添加)。
-添加~~ blksize ~~,~~超时~,和tsize测试。
-可能为了好玩而实现rfcs 906和951!
-重构代码,消除一些重复,优化一些低挂果。


向任何获得本软件和相关文档文件(以下简称"软件")副本的人,无限制地处理本软件中的
,包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或出售
本软件副本的权利,并允许向其提供该软件的人这样做,但须符合以下条件:


上述版权声明和本许可声明应包括在该软件的所有
副本或实质性部分中。

任何形式的明示或暗示保证,包括但不限于适销性保证、特定用途适用性保证和非侵权性保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,
作者或版权所有人都不对任何索赔、损害赔偿或其他
责任负责,
不属于或与软件有关,或使用或与
软件有关。



[1]:https://en.wikipedia.org/wiki/trivial_file_transfer_protocol
[2]:https://tools.ietf.org/html/rfc1350
[3]:https://tools.ietf.org/html/rfc2347
[4]:https://tools.ietf.org/html/rfc2348
[5]:https://tools.ietf.org/html/rfc2349
[6]:https://docs.python.org/3/library/asyncio protocol.html
[7]:https://docs.python.org/3/library/asyncio task.html
[8]:https://www.python.org/dev/peps/pep-0448/
[9]:http://legacy.python.org/dev/peps/pep-3109/
[10]:https://tools.ietf.org/html/rfc7440

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java嗨,我正在尝试运行一个简单的奇偶程序,但它给了我一个错误“预期标识符”   java程序输出问题   使用全新Spring上下文的java启动JUnit测试   oauth获取Java中Microsoft Graph API的令牌   java如何停止声音   for loop Java 8向集合中添加自定义元素的方法?   java如何将数组的第n个值赋给变量   java局部变量在使用前必须初始化,例如实例变量,没有这样的限制,为什么?   macos在Mac上安装和运行Java应用程序   运行jar文件时发生java NoClassDefFoundError   用于映射同一数据库中多个MySQL表的java Hibernate配置文件(.cfg.xml)?   如何使用Java通过代理发送华为推送通知   datetime Java将MessagePack时间戳转换为日期   java如何从读取器返回的字符串中删除unicode空格。readLine()   java返回Ljava的字符串值。lang.对象   如何使用java方法在jsp中打印arraylist   JAVAutil。扫描器java。lang.NumberFormatException与一个只有int的txt文件   java Dijkstra单调路径   键入错误号时发生java错误