跳转到主要内容

XMODEM、YMODEM和ZMODEM的调制解调器实现

项目描述

此包将XMODEM、YMODEM和ZMODEM协议移植到Python。我们尽量以尽可能简洁的方式实现这些协议,同时不破坏协议规范。

大多数调制解调器类的接口相当相似。但请注意,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__])

致谢

关于协议

XMODEM:

© 1977 Ward Christensen

YMODEM:

© 1985 Chunk Forsberg, Omen Technology Inc.

ZMODEM:

© 1986 Chunk Forsberg, Omen Technology Inc.

感谢

  • Paolo Perfetti,编写了大部分YMODEM实现

项目详情


支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面