iOS--XMPP文件传输

IM一个项目中需要文件传输, 研究了 总结下

XEP-0096: File Transfer 传输文件的统一接口, 客户端之间用它来协商到底采用哪种具体的传输方式, 包括以下三种:

1.XEP-0047: In-Band ByteStreams 带内字节流, 这个协议可用于小数据量传输, 只是用字节流传输, (图片可以, 语音压缩好也可以).

带内, 顾名思义, 就是夹带在XML流中, 通过xmpp服务器中转传输, 具体用法是把数据用base64编码放在XML流传给对方. 此方法简单, 但是不好, base64编码效率低, 而且所有数据必须由服务器中转(字符串格式的数据中转)

2.XEP-0066:Out of Band Data 带外字节流, 带内走不通就走带外, 也就是不经过xmpp服务器. 这个用法在发起传输的客户端临时建立起一个htpp服务(当然也可以是别的服务), 把自己的ip和端口号, 通过xmpp消息, 告诉接收方, 让对方直接来下载. 但是这个方法有一个问题, 发送一方必须是公网ip, 否则对方无法访问. 注:目前Pandion, linq支持这个XEP

3.XEP-0065: Socket5 ByteStreams Socket5字节流, 使用SOCKET5传输文件, 有直连式和代理传输两种方式. 发送方把预定的ip和端口(通过xmpp消息)告诉给接收方. 如果双方在公网, 采用socket5 直接传输, 如果任何一方在内网, 经过socket5代理服务器传输, 发送方把代理服务器的ip和端口号告诉给接收方.  这里的socket5代理服务器和通用的代理服务器稍有差别, 因为他需要通过发送方提出的一个sessionID由xmpp服务器通知socket5服务器把双方的socket5通道连通, 也就是激活. 注: 目前Psi, Ling支持这个XEP.


最后项目采用的就是socket5代理服务器的传输, 虽然有些折腾, 效率还行. 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值