2015-09-25 67 views
0

continue與服務器的連接。我已成功加入XMPP library我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); 
     }  

這種情況下occure:

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> 

看來事情是在配置丟失。 非常感謝您的回覆。

回答

2

根據this page除外:

Sharp.Xmpp.XmppDisconnectionException: Unrecoverable stream error: host-unknown 

是指:

的「到」由發起實體在 提供屬性的流頭不對應於主機名的值該服務器由 託管。

因此,您用於建立連接的主機名稱與服務器的主機名稱不匹配。那麼你確定你使用的主機名是正確的,服務器使用的是這個主機名嗎?

+0

我用「jabbim.cz」作爲主機變量。我不得不提到這段代碼在控制檯應用程序中正常工作,所以問題可能在Android/Xamarin中。 – Kliford

+0

如果它在控制檯中正常工作,那麼它可能是Android無法連接到特定主機的防火牆/代理問題。您是否在清單中添加了所需的互聯網許可? – spcial

+0

是的,我已經添加「android.permission.INTERNET」,我必須添加別的東西嗎? – Kliford

0

這大概是在Android或服務器配置DNS解析問題。 Sharp.Xmpp使用https://arsofttoolsnet.codeplex.com/包。

$ NSLOOKUP -querytype = SRV _xmpp-client._tcp.jabbim.cz 服務器:100.72.64.140 地址:100.72.64.140#53

非權威的答案: _xmpp-client._tcp.jabbim .cz service = 10 0 5222 lb1-hap.jabbim.cz。 _xmpp-client._tcp.jabbim.cz服務= 20 0 5222 lb2-hap.jabbim.cz。

權威的答案可以從發現: lb1-hap.jabbim.cz互聯網地址= 88.86.102.58 lb2-hap.jabbim.cz互聯網地址= 37.157.196.214`

根據您的片段,分辨率是正確的,並且你正在連接到lb1-hap.jabbim.cz。難道是從控制檯連接到lb2,而lb2,lb1有不同的配置?

0

使用此:

client = new XmppClient(hostname, username, password); 
client.Hostname = hostname; 
client.Connect(); 

的原因似乎是在Sharp.Xmpp的錯誤。 在XmppClient()功能的主機名被改變的DNS查找,你的情況lb1-hap.jabbim.cz

後來在Connect()函數中,第一個XML節點發送到相同的主機名"to:lb1-hap.jabbim.cz"。然後用Unknown Host正確的服務器響應,因爲它要jabbim.cz