xmodem、ymodem和zmodem的调制解调器实现

modem的Python项目详细描述


这个包将xmodem、ymodem和zmodem协议移植到python。我们试着 在不破坏 协议规范。

大多数modem类的接口都非常相似。但请记住, xmodem协议可以一次发送一个文件(流),而 ymodem和zmodem协议可以发送多个。

必须为所有调制解调器实现提供一个getc回调以检索 来自远程端的字符数据和用于发送字符的putc回调 数据。

示例

使用STDIN/STDOUT的示例可能如下:

>>> import select
>>> import sys
>>> def getc(size, timeout=5):
...     r, w, e = select.select([sys.stdin.fileno()], [], [], timeout)
...     if r: return sys.stdin.read(size)
...
>>> def putc(data, timeout):
...     r, w, e = select.select([], [sys.stdout.fileno()], [], timeout)
...     if w: return sys.stdout.write(data)

现在我们可以使用XMODEM

发送流
>>> from modem import XMODEM
>>> xmodem = XMODEM(getc, putc)
>>> stream = file(__file__)
>>> xmodem.send(stream)
...

或者使用YMODEMZMODEM发送一个或多个文件:

>>> from modem import ZMODEM
>>> zmodem = ZMODEM(getc, putc)
>>> zmodem.send([__file__])

致谢

关于协议:

^{tt5}$:© 1977 Ward Christensen
^{tt6}$:© 1985 Chunk Forsberg, Omen Technology Inc.
^{tt7}$:© 1986 Chunk Forsberg, Omen Technology Inc.

感谢:

  • paolo perfetti编写了大部分YMODEM实现

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

推荐PyPI第三方库


热门话题
多线程如何在读取文本文件时使用Java进度条?   ChromeDriver出现“java.lang.module.InvalidModuleDescriptorException:提供程序类org.apache.bsf.BSFManager不在模块中”错误   java如何将Google日历链接到应用程序?   java线程信令序列   java StackOverflowerr不知道出了什么问题   从azure mobile apps easy tables获取表格时,java Android应用程序冻结   java Android应用程序无法连接到firebase数据库   java如何将属性文件中的值注入字段?   无法创建java Spring引导CXF XMLOutputFactory   javaui:月份选择器   获取java数组中n个最大值的索引   java注入servlet调度器中的EntityManagerFactory(非托管)   我在Android Studio中编写java代码,需要从特定网页获取并显示特定行的数据   java如何在Hibernate中设置内部查询的限制?   java如何编写接受一个数组和两个整数的交换方法   基于递归的java快速供电方法