我想使用TURNSocket在两个用户之间传输文件。
User1:(iphone sumulator) User2:(Spark用户)
现在套接字已经连接,我想通过Spark从User2向User1发送一个文件。iphone sumulator可以收到这些消息:
<iq xmlns="jabber:client" id="P1J6b-29" to="User1@local/75694fce" from="User2@local/Spark 2.6.3" type="set">
<si xmlns="http://jabber.org/protocol/si" id="jsi_8334411215933911079" mime-type="image/png"
profile="http://jabber.org/protocol/si/profile/file-transfer">
<file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="a2.png" size="12618">
<desc>Sending 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>我在有关如何在didSucceed方法中处理的XMPP Sending/Receving file in iphone sdk ...?主题中看到了这些,但我不知道如何接收iphone sumulator上的Spark用户发送的文件。
然后,在您的didSucceed实现中,使用以下命令在传入的套接字上发送数据:
- (void)writeData:(NSData *)data
withTimeout:(NSTimeInterval)timeout
tag:(long)tag;最后,关闭套接字:
- (void)disconnectAfterWriting;那么,如何在此方法或其他方法中编写接收文件的代码?
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
// Where is the NSData that can be find to used in writeData method ?
}发布于 2013-08-02 05:06:38
试试FastSocket https://github.com/dreese/fast-socket吧。它最适合于iPhones或服务器之间的TCP连接。有关如何使用它的详细说明,请阅读文档(特别是单元测试)。您需要知道相互连接所需的每个设备的IP。
https://stackoverflow.com/questions/8382837
复制相似问题