2017-03-31 12 views
6

मैं openFire शुरू करने और यह परीक्षण के साथ चिंगारी सब कुछ ठीक है, लेकिन मैं यह त्रुटि आई जब मैं एंड्रॉयड स्टूडियो में स्मैक 4.2.0 के साथ कनेक्ट करने का प्रयास:त्रुटि: AAAA में एक त्रुटि प्रतिक्रिया NX_DOMAIN झुकेंगे

Ljavax/नामकरण/निर्देशिका/InitialDirContext;

compile "org.igniterealtime.smack:smack-java7:4.2.0" compile "org.igniterealtime.smack:smack-tcp:4.2.0" compile "org.igniterealtime.smack:smack-im:4.2.0" compile "org.igniterealtime.smack:smack-extensions:4.2.0" compile "org.igniterealtime.smack:smack-android-extensions:4.2.0" compile "org.igniterealtime.smack:smack-bosh:4.2.0"

जब इस को दूर: "org.igniterealtime.smack संकलन: स्मैक-java7: 4.2.0" निर्भरता से और इस जोड़ें: संकलन "संगठन

और मेरी निर्भरता यह है। igniterealtime.smack: स्मैक-एंड्रॉयड: 4.2.0 " मेरी निर्भरता इस तरह हो जाते हैं:

:

compile 'com.android.support:appcompat-v7:24.0.0' compile "org.igniterealtime.smack:smack-android:4.2.0" compile "org.igniterealtime.smack:smack-tcp:4.2.0" compile "org.igniterealtime.smack:smack-im:4.2.0" compile "org.igniterealtime.smack:smack-extensions:4.2.0" compile "org.igniterealtime.smack:smack-android-extensions:4.2.0" compile "org.igniterealtime.smack:smack-bosh:4.2.0"

मैं यह त्रुटि आई

org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: '192.168.209.2:5222' failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for 192.168.209.2. IN A yielded an error response NX_DOMAIN, '192.168.209.2:5222' failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for 192.168.209.2. IN AAAA yielded an error response NX_DOMAIN

कोड की बात यह है कि त्रुटि जब मैं conn.connect को (कोशिश) यह है:

XMPPTCPConnectionConfiguration config = null; 
      try { 
       config = XMPPTCPConnectionConfiguration.builder() 
         .setUsernameAndPassword("admin", "thepass") 
         .setXmppDomain("192.168.1.3") 
         .setHost("192.168.209.2") 
         .setPort(5222) 
         .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
         .build(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
       AbstractXMPPConnection conn1 = new XMPPTCPConnection(config); 
       conn1.setReplyTimeout(60000); 
       conn1.setPacketReplyTimeout(60000); 
       conn1.connect(); 
+0

हटाने .setXmppDomain ("192.168.1.3") इस विधि और setServiceName() और उपयोगकर्ता नाम और पासवर्ड प्रदान करते हुए xmpp सर्वर –

+0

इस स्मैक 4.1.6 में काम करता है और के लिए अपनी प्रवेश मैं उपयोग कर रहा हूँ वर्तमान में यह मेरे लिए काम करता है धन्यवाद –

+0

हां यह 4.2.0 संस्करणों में से ऊपर का काम है, वर्तमान में मैं 4.1.9 का उपयोग कर रहा हूं और यह काम कर रहा है लेकिन मुझे नए संस्करण 4.2.0 – sadegh

उत्तर

11

त्रुटि आप सामना करना पड़ा अधूरा अपने XMPP सर्वर को संबोधित से उत्पन्न कर रहा है।

इस परिदृश्य की कल्पना कीजिए:

my ejabberd server is running on this address: 192.168.209.2 #ejabberd server

एक xmpp डोमेन नाम दिया "स्थानीय होस्ट" दो JIDs रहे हैं नहीं है,

"[email protected]" and "[email protected]"

स्मैक में, मैं अपने उपयोगकर्ता के साथ प्रमाणित करना चाहते हैं, कहते हैं कि "mina कृपया @localhost "। तब मैं इस प्रकार यह कार्य करें:

  InetAddress addr = InetAddress.getByName("192.168.209.2"); 
      HostnameVerifier verifier = new HostnameVerifier() { 
       @Override 
       public boolean verify(String hostname, SSLSession session) { 
        return false; 
       } 
      }; 
      DomainBareJid serviceName = JidCreate.domainBareFrom("localhost"); 
      XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() 
        .setHost(server) # it will be resolved by setHostAddress method 
        .setUsernameAndPassword("davood","mypass") 
        .setPort(5222) 
        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
        .setXmppDomain(serviceName) 
        .setHostnameVerifier(verifier) 
        .setHostAddress(addr) 
        .setDebuggerEnabled(true) 
        .build(); 
      AbstractXMPPConnection conn1 = new XMPPTCPConnection(config); 

      conn1.connect(); 

      if(conn1.isConnected()){ 
       Log.d("XMPP","Connected"); 
      } 
      conn1.login(); 

      if(conn1.isAuthenticated()){ 
       Log.d("XMPP","Authenticated"); 
       EntityBareJid jid = JidCreate.entityBareFrom("[email protected]"); 
       org.jivesoftware.smack.chat2.Chat chat = ChatManager.getInstanceFor(conn1).chatWith(jid); 
       chat.send("Eureka, I am connected!"); 


      } 
+1

धन्यवाद, आपको इसे ठीक करें! – sadegh

7

की जांच करें: https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide

स्मैक, ConnectionConfiguration.setHost (स्ट्रिंग) के पिछले संस्करणों में XMPP सेवा के मेजबान आईपी पते सेट करने के लिए इस्तेमाल किया जा सकता। जोड़ा गया DNSSEC समर्थन के कारण यह अब संभव नहीं है। आपको इसके बजाय नए कनेक्शन कॉन्फ़िगरेशन कनेक्शन कॉन्फ़िगरेशन.सेटहोस्ट एड्रेस (इनेट एड्रेस) का उपयोग करना होगा।

आप इसे भी देख सकते हैं।

failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for xxxx. \t IN \t AAAA yielded an error response NX_DOMAIN

संबंधित मुद्दे