iphone - XMPP 在 iphone sdk 中发送/接收文件...?

标签 iphone xmpp openfire xmppframework

如何使用xmpp框架在iphone sdk中发送/接收文件? 目前我正在使用 XEP-0065 类,并使用以下代码:

ObjTURNSocket = [[TURNSocket alloc] initWithStream:((TestAppDelegate*)[[UIApplication sharedApplication] delegate]).xmppStream 
                                                 toJID:chatuser.jid];
    [ObjTURNSocket start:self];

我从服务器收到以下响应:

<iq type="error" id="AB2ED567-B97F-4DFE-B789-7731A617C239" to="kapil@testweb/6df6dc96" from="jabber.org">
   <query xmlns="http://jabber.org/protocol/disco#items"/>
   <error code="404" type="cancel">
      <remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
   </error>
 </iq>`

任何帮助或建议将不胜感激。

最佳答案

首先,使用可用于代理的可能服务器数组调用 setProxyCandidates。默认值为“jabber.org”,并且您的服务器未与 jabber.org 联合,这就是您收到迪斯科错误的原因。

接下来,在您的委托(delegate)中实现以下方法:

- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket;
- (void)turnSocketDidFail:(TURNSocket *)sender;

然后,在 didSucceed 实现中,使用以下方法在传入的套接字上发送数据:

- (void)writeData:(NSData *)data 
      withTimeout:(NSTimeInterval)timeout 
              tag:(long)tag;

最后,关闭套接字:

- (void)disconnectAfterWriting;

我通过查看 TURNSocket.m 的源代码发现了这一点,查找硬编码的“jabber.org”,然后搜索 [delegate 以查找调用委托(delegate)的位置。这让我回到TURNSocket.h ,其中记录了供委托(delegate)执行的协议(protocol)。

关于iphone - XMPP 在 iphone sdk 中发送/接收文件...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328553/

相关文章:

iphone - 如何创建 iPhone 应用程序的简单音乐可视化工具?

javascript - Strophe 在进入房间之前检索信息

ssl - 使用 https 请求忽略 strophe js 中的自签名 ssl 证书

iphone - OpenGL ES 平铺纹理 Mipmap 问题 - iPad/iPhone

iphone - 使站点在 iPhone 上对称对齐

android - 如何使用 openfire 实现第三方 GCM - CCS XMPP 服务器?

android - 如何通过对话设置我的 Openfire XMPP 服务器?

ruby-on-rails - XMPP4r - 无法检索离线消息

ios - 如何从字符串列表中找到特定的字符串?

android xabber 未授权 openfire xmpp 帐户