XMPP文件传输过程
客户端A向B 发送文件的过程:
两个XMPP节点之间传输文件一般有三种方式:
Out-of-Band Data 具体见XEP-0066:点击打开链接in-band bytestream 适合传输较小的数据,通过直接携带在XML中进行传输 具体见:XEP-0047:点击打开链接?
以下为通过socks5 方式传输文件的过程:
?
1.A向B发送请求查询B是否支持字节流。
?
?
2.B返回应答
3.A向服务器发送请求,查询可用的代理
4.服务器应答,返回目前disco列表中所有可用的服务项
5.A验证服务器中每一项是否是字节流代理
6.服务器应答每一项的查询结果
7.A发送请求,查询代理服务器的网络地址
8.服务器返回代理服务器的网络地址(包括IP和端口)
9.A通知B代理服务器的地址
10.B与代理进行验证和连接初始化
一旦A通知完B后,B就要主动与代理服务器建立socks5连接。
代理服务器中保持有一个ProxyConnectionManager,它绑定到一个IP和端口,然后启动一个线程不断地监听这个端口。在监听到B的连接后就调用processConnection()来处理。先验证是否为socks5类型的连接,再读取支持的验证方式,然后生成一个ProxyTransfer对象。用到B的socket连接来初始化此对象的outputStream,存入map中备用。
?