gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:39:24 26 4
gpt4 key购买 nike

如何使用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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com