我被分配在 Windows 平台上编写一个 c++ 程序,以使用 zmodem 通过串行端口从远程服务器检索文本文件。几乎和这个人一样,但在窗户上。
这是我卡住的地方:我可以使用串行电缆与服务器通信,但是当服务器发送文件时,它使用 zmodem 协议,所以我看到服务器向我发送 rz\r**.B00000000\r
所以我阅读了zmodem 协议的规范,但我不明白如何开始接收文件。我根据规范中提到的头文件发送 ZRINIT 。但文件传输并未开始。
我的问题是这个。当我收到发送文件的请求并期望开始接收数据包时,我可以简单地发送字节吗?我可能发送了错误的代码吗?在那种情况下,是否有一个如何编码的示例我是否应该不费心尝试自己编写协议并找到一个自动为我执行此操作的库?如果是这样,它是否适用于 Windows?或者我应该寻找一个从命令行获取输入的通信程序?
我真的只需要一些关于如何进行的建议。
我阅读了有关sexyz 的信息,但找不到下载页面。
欢迎任何意见。
更新
我对协议有了更多了解。该规范在第 8 节和第 12 节中提到了发送方和接收方之间的交易是如何工作的。从那我已经能够解密一些头文件的代码,比如 ZRQINIT、ZRINIT、ZFILE ......例如
char ZRINIT[]={42, 42, 24, 66, 48, 49, 48, 48, 48, 48, 48, 48, 50, 51, 98, 101, 53, 48, 13, -118, 17,0}
我仍然缺少很多,即 ZRP0S、ZRFIN。如果有人可以找到定义这些字符串的位置的链接,那将对我有很大帮助。