XMPP (Xamarin.Android)中的主机未知异常
本文关键字:主机 未知 异常 Xamarin Android XMPP | 更新日期: 2023-09-27 18:14:28
我继续连接到服务器。我已经成功地将XMPP库添加到Xamarin中。Android项目,但当我试图做一个简单的连接:
using (var cl = new XmppClient(hostname,username,password))
{
cl.Connect();
Console.WriteLine("Contacts on " + cl.Jid.Node + "'s contact-list:");
foreach (var item in cl.GetRoster())
Console.WriteLine(" - " + item.Jid);
}
this case happens:
09-25 12:37:14.713 I/mono-stdout( 2821): _xmpp-client._tcp.jabbim.cz 2454 IN SRV 20 0 5222 lb2-hap.jabbim.cz
|--- Name _xmpp-client._tcp.jabbim.cz
09-25 12:37:14.717 I/mono-stdout( 2821): |--- Name _xmpp-client._tcp.jabbim.cz
|--- Port: 5222
09-25 12:37:14.721 I/mono-stdout( 2821): |--- Port: 5222
09-25 12:37:14.729 I/mono-stdout( 2821): |--- Priority20
|--- Priority20
09-25 12:37:14.741 I/mono-stdout( 2821): |--- Type Srv
|--- Type Srv
|--- Target: lb2-hap.jabbim.cz
09-25 12:37:14.765 I/mono-stdout( 2821): |--- Target: lb2-hap.jabbim.cz
_xmpp-client._tcp.jabbim.cz 2454 IN SRV 10 0 5222 lb1-hap.jabbim.cz
09-25 12:37:14.773 I/mono-stdout( 2821): _xmpp-client._tcp.jabbim.cz 2454 IN SRV 10 0 5222 lb1-hap.jabbim.cz
|--- Name _xmpp-client._tcp.jabbim.cz
09-25 12:37:14.781 I/mono-stdout( 2821): |--- Name _xmpp-client._tcp.jabbim.cz
|--- Port: 5222
09-25 12:37:14.781 I/mono-stdout( 2821): |--- Port: 5222
|--- Priority10
09-25 12:37:14.785 I/mono-stdout( 2821): |--- Priority10
09-25 12:37:14.789 I/mono-stdout( 2821): |--- Type Srv
|--- Type Srv
|--- Target: lb1-hap.jabbim.cz
09-25 12:37:14.797 I/mono-stdout( 2821): |--- Target: lb1-hap.jabbim.cz
09-25 12:37:15.457 D/Mono ( 2821): Assembly Ref addref System.Xml[0xb7c5d400] -> System[0xb7c24320]: 7
09-25 12:37:16.033 D/Mono ( 2821): DllImport attempting to load: '/system/lib/liblog.so'.
09-25 12:37:16.057 D/Mono ( 2821): DllImport loaded library '/system/lib/liblog.so'.
09-25 12:37:16.057 D/Mono ( 2821): DllImport searching in: '/system/lib/liblog.so' ('/system/lib/liblog.so').
09-25 12:37:16.057 D/Mono ( 2821): Searching for '__android_log_print'.
09-25 12:37:16.065 D/Mono ( 2821): Probing '__android_log_print'.
09-25 12:37:16.065 D/Mono ( 2821): Found as '__android_log_print'.
09-25 12:37:16.085 I/MonoDroid( 2821): UNHANDLED EXCEPTION:
09-25 12:37:16.085 I/MonoDroid( 2821): Sharp.Xmpp.XmppDisconnectionException: Unrecoverable stream error: host-unknown
09-25 12:37:16.093 I/MonoDroid( 2821): at Sharp.Xmpp.Core.StreamParser.NextElement (string[]) <IL 0x0015d, 0x00713>
09-25 12:37:16.093 I/MonoDroid( 2821): at Sharp.Xmpp.Core.XmppCore.InitiateStream (string) <IL 0x000b5, 0x002eb>
09-25 12:37:16.093 I/MonoDroid( 2821): at Sharp.Xmpp.Core.XmppCore.SetupConnection (string) <IL 0x00007, 0x00053>
09-25 12:37:16.097 I/MonoDroid( 2821): at Sharp.Xmpp.Core.XmppCore.Connect (string) <IL 0x0004f, 0x001bf>
09-25 12:37:16.097 I/MonoDroid( 2821): at Sharp.Xmpp.Im.XmppIm.Connect (string) <IL 0x00078, 0x002b7>
09-25 12:37:16.101 I/MonoDroid( 2821): at Sharp.Xmpp.Client.XmppClient.Connect (string) <IL 0x00007, 0x00033>
似乎在配置中缺少了一些东西。非常感谢您的回复
根据本页的例外:
Sharp.Xmpp.XmppDisconnectionException: Unrecoverable stream error: host-unknown
指:
中的初始实体提供的'to'属性的值流报头与主机名不对应服务器。
表示用于建立连接的主机名与服务器的主机名不匹配。你确定你使用的主机名是正确的服务器使用的主机名是正确的吗?
这可能是Android或服务器配置中的DNS解析问题。锋利。Xmpp使用https://arsofttoolsnet.codeplex.com/包。
$ nslookup -querytype=SRV _xmpp-client._tcp. jabim .cz服务器 : 100.72.64.140地址:100.72.64.140 # 53
那些回答:_xmpp-client._tcp.jabbim。Cz服务= 10 0 5222 lb1-hap. jabim . Cz。_xmpp-client._tcp.jabbim。Cz service = 20 0 5222 lb2-hap. jabim . Cz .
权威答案来自:lb1-hap.jabbim。Cz Internet地址= 88.86.102.58lb2-hap.jabbim。Cz地址= 37.157.196.214 '
根据您的代码片段,分辨率是正确的,并且您正在连接到lb1-hap. jabim .cz。可能是从控制台连接到lb2,而lb2、lb1有不同的配置?
使用
client = new XmppClient(hostname, username, password);
client.Hostname = hostname;
client.Connect();
原因似乎是Sharp.Xmpp中的一个bug。在XmppClient()
函数中,主机名被更改为DNS查找,在您的示例中为lb1-hap.jabbim.cz
。
随后在Connect()
函数中,第一个XML节被发送到相同的主机名"to:lb1-hap.jabbim.cz"
。然后服务器正确响应Unknown Host
,因为它想要jabbim.cz