如何使用Python通过XMPP传输文件?
我正在使用xmpppy这个库来制作我的Jabber远程管理机器人,但我找不到怎么发送或接收文件,并把它保存在指定的目录里。这个库的文档很差,而且没有任何示例,但我真的想做到这一点。有没有人能给我一些示例或者相关链接?或者我是不是应该考虑使用其他的xmpp绑定呢?
2 个回答
0
在xmpppy中,有一个模块叫做 xmpp.filetransfer:
这个模块包含一个叫做IBB的类,它是JEP-0047的简单实现。需要注意的是,这只是数据传输的一种方式。在传输数据之前,你需要先进行一些协商(通常是通过StreamInitiation来进行)。不过,遗憾的是,StreamInitiation目前还没有实现。
3
有两个XEP(XMPP扩展)是关于文件传输的:XEP-0096 http://xmpp.org/extensions/xep-0096.html(叫做SI(流启动)文件传输)和XEP-0234 http://xmpp.org/extensions/xep-0234.html(Jingle文件传输)
XEP-0096是最早的那个,但我发现大多数库和客户端都很少实现它(就像你发现的那样)。而XEP-0234则更新一些,现代的客户端中比较常见,但在一些老旧的库(比如xmpppy)中却没有。即使你找到一个实现了这两个中的任意一个的库,连接的两边都必须都支持它们,这也是个问题。
在这两个中,我会选择XEP-0234,因为它解决了原版的一些问题,并被认为是对它的替代。
至于Python库,目前没有一个支持它。我查看过xmpppy、headstock、pyxmpp、jabber.py、twisted words,还有我最喜欢的sleekxmpp。