首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

openfire客户端文件传输学习笔记(1)

2013-11-09 
openfire客户端文件传输学习笔记(一)iq?toandroid@192.168.1.113/Spark?2.6.3?typeset?idiq_13?

openfire客户端文件传输学习笔记(一)
<iq?to="android@192.168.1.113/Spark?2.6.3"?type="set"?id="iq_13"?from="iphone@192.168.1.113/xiff">
openfire客户端文件传输学习笔记(1)????<si?profile="http://jabber.org/protocol/si/profile/file-transfer"?mime-type="text/plain"?id="82B0C697-C1DE-93F9-103E-481C8E7A3BD8"?xmlns="http://jabber.org/protocol/si">
openfire客户端文件传输学习笔记(1)????????<feature?xmlns="http://jabber.org/protocol/feature-neg">
openfire客户端文件传输学习笔记(1)????????????<x?xmlns="jabber:x:data"?type="form">
openfire客户端文件传输学习笔记(1)????????????????<field?var="stream-method"?type="list-single">
openfire客户端文件传输学习笔记(1)????????????????????<option><value>http://jabber.org/protocol/bytestreams</value></option>
openfire客户端文件传输学习笔记(1)????????????????????<option><value>http://jabber.org/protocol/ibb</value></option>
openfire客户端文件传输学习笔记(1)????????????????</field>
openfire客户端文件传输学习笔记(1)????????????</x>
openfire客户端文件传输学习笔记(1)????????</feature>
openfire客户端文件传输学习笔记(1)????????<file?xmlns="http://jabber.org/protocol/si/profile/file-transfer"?name="img0545.png"?size="152443"><desc>send</desc></file>
openfire客户端文件传输学习笔记(1)????</si>
openfire客户端文件传输学习笔记(1)</iq>

?
目标方接收到信息后发送回执,表示同意接收文件

?

openfire客户端文件传输学习笔记(1)<iq?id="iq_13"?to="iphone@192.168.1.113/xiff"?from="android@192.168.1.113/Spark?2.6.3"?type="result">
openfire客户端文件传输学习笔记(1)????<si?xmlns="http://jabber.org/protocol/si">
openfire客户端文件传输学习笔记(1)????????<feature?xmlns="http://jabber.org/protocol/feature-neg">
openfire客户端文件传输学习笔记(1)????????????<x?xmlns="jabber:x:data"?type="submit">
openfire客户端文件传输学习笔记(1)????????????????<field?var="stream-method">
openfire客户端文件传输学习笔记(1)?????????????????????<value>http://jabber.org/protocol/bytestreams</value>
openfire客户端文件传输学习笔记(1)?????????????????????<value>http://jabber.org/protocol/ibb</value>
openfire客户端文件传输学习笔记(1)????????????????</field>
openfire客户端文件传输学习笔记(1)?????????????</x>
openfire客户端文件传输学习笔记(1)????????</feature>
openfire客户端文件传输学习笔记(1)?????</si>
openfire客户端文件传输学习笔记(1)</iq>
openfire客户端文件传输学习笔记(1)

?

这时进入XEP-0065协议阶段
初始方给服务器发送信息,请求提供代理服务器

?

openfire客户端文件传输学习笔记(1)<iq?id="iq_15"?type="get"><query?xmlns="http://jabber.org/protocol/disco#items"?/></iq>
openfire客户端文件传输学习笔记(1)


服务器回复信息,告知可用的代理

?

openfire客户端文件传输学习笔记(1)<iq?type="result"?id="iq_15"?to="iphone@192.168.1.113/xiff">
openfire客户端文件传输学习笔记(1)????<query?xmlns="http://jabber.org/protocol/disco#items">
openfire客户端文件传输学习笔记(1)????????<item?jid="proxy.192.168.1.113"?name="Socks?5?Bytestreams?Proxy"/>
openfire客户端文件传输学习笔记(1)????????<item?jid="pubsub.192.168.1.113"?name="Publish-Subscribe?service"/>
openfire客户端文件传输学习笔记(1)????????<item?jid="conference.192.168.1.113"?name="公共房间"/>
openfire客户端文件传输学习笔记(1)????????<item?jid="search.192.168.1.113"?name="User?Search"/>
openfire客户端文件传输学习笔记(1)????</query>
openfire客户端文件传输学习笔记(1)</iq>
openfire客户端文件传输学习笔记(1)

?
这里选择name=“Socks 5 Bytestreams Proxy”的代理,初始方给这个代理发送信息获取代理连接信息

?

openfire客户端文件传输学习笔记(1)<iq?id="iq_17"?to="proxy.192.168.1.113"?type="get"><query?xmlns="http://jabber.org/protocol/bytestreams"?/></iq>

代理方回复信息,告知初始方代理的jid、IP、端口等信息

?

openfire客户端文件传输学习笔记(1)<iq?type="result"?id="iq_17"?from="proxy.192.168.1.113"?to="iphone@192.168.1.113/xiff">
openfire客户端文件传输学习笔记(1)????<query?xmlns="http://jabber.org/protocol/bytestreams">
openfire客户端文件传输学习笔记(1)????????<streamhost?jid="proxy.192.168.1.113"?host="192.168.1.113"?port="7777"/>
openfire客户端文件传输学习笔记(1)????</query>
openfire客户端文件传输学习笔记(1)</iq>
openfire客户端文件传输学习笔记(1)

?
初始方收到代理信息后将代理的信息发送给目标方

?

openfire客户端文件传输学习笔记(1)<iq?to="android@192.168.1.113/Spark?2.6.3"?type="set"?id="iq_19"?from="iphone@192.168.1.113/xiff">
openfire客户端文件传输学习笔记(1)????<query?xmlns="http://jabber.org/protocol/bytestreams"?mode="tcp"?sid="82B0C697-C1DE-93F9-103E-481C8E7A3BD8">
openfire客户端文件传输学习笔记(1)????????<streamhost?port="7777"?host="192.168.1.113"?jid="proxy.192.168.1.113"?/>
openfire客户端文件传输学习笔记(1)????</query>
openfire客户端文件传输学习笔记(1)</iq>
openfire客户端文件传输学习笔记(1)

?

然后就进入连接阶段,也就是初始方和目标方分别和代理建立socks5连接的过程。(关于SOCKS5协议连接,我之后会补充)。
目标方收到代理信息后和代理建立socket连接(使用SOCKS5协议连接),连接成功后通知初始方使用的代理jid

?

openfire客户端文件传输学习笔记(1)<iq?id="iq_19"?to="iphone@192.168.1.113/xiff"?type="result"?from="android@192.168.1.113/Spark?2.6.3">
openfire客户端文件传输学习笔记(1)????<query?xmlns="http://jabber.org/protocol/bytestreams">
openfire客户端文件传输学习笔记(1)????????<streamhost-used?jid="proxy.192.168.1.113"/>
openfire客户端文件传输学习笔记(1)????</query>
openfire客户端文件传输学习笔记(1)</iq>
openfire客户端文件传输学习笔记(1)

?
初始方开始与代理建立socket连接(也使用SOCKS5协议),连接成功后给代理发送请求,要求激活文件流

?

openfire客户端文件传输学习笔记(1)<iq?to="proxy.192.168.1.113"?type="set"?id="iq_21"?from="iphone@192.168.1.113/xiff">
openfire客户端文件传输学习笔记(1)<query?xmlns="http://jabber.org/protocol/bytestreams"?sid="82B0C697-C1DE-93F9-103E-481C8E7A3BD8">
openfire客户端文件传输学习笔记(1)<activate>android@192.168.1.113/Spark?2.6.3</activate>
openfire客户端文件传输学习笔记(1)</query>
openfire客户端文件传输学习笔记(1)</iq>
openfire客户端文件传输学习笔记(1)

?
代理回复激活成功信息

?

openfire客户端文件传输学习笔记(1)<iq?type="result"?id="iq_21"?from="proxy.192.168.1.113"?to="iphone@192.168.1.113/xiff"/>
openfire客户端文件传输学习笔记(1)

初始方收到回复信息后就进入二进制流传输阶段,这时就可以开始发送二进制流了

等初始方将流发送完毕后把socket流关闭传输就完成了文件的传输。

?

注意:type为result的回复信息使用的id一定要和请求的信息id一样。

热点排行