我让我的应用使用XMPP File Transfer彼此共享文件,但是存在问题。
有两个客户端(我将其称为“ public class SuperLazy<T> : Lazy<T>
where T : new()
{
public SuperLazy()
: base(() => new T())
{
}
}
”和“ A
”),“ B
”通过XMPP发送照片文件。它总是在第一次传输时成功,但是在第二次尝试后,“ A
”无法接收到来自“ A
”的任何文件。 “ B
”只能发送文件,不能接收。
我检查了日志,发现客户端开始发送文件时,它将此IQ消息发送给接收方以获得接收方客户端的文件传输支持功能;
A
然后,接收方返回IQ消息,其中包含客户端的类型,功能等...;
<iq type="get" to="clientB@121.190.105.26/ios" id="B67CD942-7F63-45CB-AB28-F0DA2E04402F">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
然后每个客户都获得SI优惠,授予他们并建立文件传输连接。
但是在第一次传输后,发送文件的客户端不响应请求客户端功能的IQ消息(disco#info)。
因此请求超时,客户端无法从发送者接收任何文件。但它仍然可以发送文件。
这是我的代码:
<iq type="result" to="clientA@121.190.105.26/ios" id="9F71CCEB-CC3E-4F4E-9B9A-94ABBAB20CC1" from="clientB@121.190.105.26/ios">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" type="ios-osx"/>
<feature var="http://jabber.org/protocol/si"/>
<feature var="http://jabber.org/protocol/si/profile/file-transfer"/>
<feature var="http://jabber.org/protocol/bytestreams"/>
<feature var="http://jabber.org/protocol/ibb"/>
</query>
</iq>