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表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误