And*_*y A 7 xmpp file-transfer asyncsocket socks xmppframework
我正在尝试使用XMPPFramework和OpenFire通过iOS上的XMPP进行文件传输.我的代码基础来自以下教程.我有一个成功的TurnSocket(XEP-0065:SOCKS5 Bytestreams)连接,但我无法工作如何使用它来发送数据.我有两个注意事项,我都坚持这两个:1.调用[socket writeData]和2.使用'XEP-0096:SI文件传输'.
可能的解决方案1 - 调用[socket writeData] 在我的App委托中,我有一个didSucceed方法.我可以像这样调用[socket writeData] ...
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
NSLog(@"TURN Connection succeeded!");
[socket writeData:myData withTimeout:60.0f tag:0];
[turnSockets removeObject:sender];
}
Run Code Online (Sandbox Code Playgroud)
6月14日更新:这是正确的吗?如果是这样,其他用户如何读取数据?我试过实施
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
Run Code Online (Sandbox Code Playgroud)
但它永远不会被召唤.我如何确保它被调用?
可能的解决方案2 - XEP-0096:SI文件传输 我是否需要使用XEP-0096:SI文件传输?如果是这样,我如何在我需要形成的XEP-0096 XML中使用我的成功连接?在XEP-0096文档意味着有一个"哈希"属性,但我不知道该从何而来.
例如
<iq type='set' id='offer1' to='receiver@jabber.org/resource'>
<si xmlns='http://jabber.org/protocol/si'
id='a0'
mime-type='text/plain'
profile='http://jabber.org/protocol/si/profile/file-transfer'>
<file xmlns='http://jabber.org/protocol/si/profile/file-transfer'
name='test.txt'
size='1022'
hash='552da749930852c69ae5d2141d3766b1'
date='1969-07-21T02:56:15Z'>
<desc>This is a test. If this were a real file...</desc>
</file>
<feature xmlns='http://jabber.org/protocol/feature-neg'>
<x xmlns='jabber:x:data' type='form'>
<field var='stream-method' type='list-single'>
<option><value>http://jabber.org/protocol/bytestreams</value></option>
<option><value>http://jabber.org/protocol/ibb</value></option>
</field>
</x>
</feature>
</si>
</iq>
Run Code Online (Sandbox Code Playgroud)
使用 XEP-0096 代替 XEP-0065 进行文件传输,它仅适用于 IOS,为了成功传输,您需要接收器的当前资源 ID,如 user@jabber.com/2526318749013466431,以与代理 IP 和端口建立连接贾伯服务器
| 归档时间: |
|
| 查看次数: |
2703 次 |
| 最近记录: |