2016-03-30 118 views
2

我正在使用Openfire服務器其管理面板正在我的本地主機上運行。當我嘗試使用本地主機上的android smack庫連接到它時,端口5222會給我連接錯誤。XMPP Openfire連接拒絕

我使用的憑據是...

private static final String DOMAIN = "127.0.0.1"; 
private static final String USERNAME = "admin"; 
private static final String PASSWORD = "admin"; 

我得到的例外是...

SMACKException:下面的地址失敗: '127.0.0.1:5223' 失敗,因爲java.net.ConnectException:無法連接到30000ms後/127.0.0.1(端口5223):isConnected失敗:ECONNREFUSED(連接被拒絕)

不過我剛裝openfire然後SE注意。我可以在http://localhost:9090/上看到管理控制檯,並且可以使用用戶名和密碼作爲管理員登錄。

我試過谷歌它,但似乎沒有爲我工作。所以任何人都可以幫助我實現它的工作?我對openfire服務器非常陌生,所以對此知之甚少。

在此先感謝。

回答

2

你確定你連接到端口5222嗎?

SMACKException:以下地址失敗:「127.0.0.1:5223」失敗,因爲java.net.ConnectException:在30000ms後無法連接到/127.0.0.1(端口5223):isConnected失敗:ECONNREFUSED(連接被拒絕)

您的堆棧指向5223(SSL)端口。 此外,您必須使用您的公共IP而不是本地主機。

synchronized void configureConnection() { 
    XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration 
      .builder(); 

    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setServiceName(HOST); 
    config.setHost(HOST); 
    config.setPort(PORT); 
    config.setDebuggerEnabled(true); 
    XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true); 
    XMPPTCPConnection.setUseStreamManagementDefault(true); 
    connection = new XMPPTCPConnection(config.build()); 
    connection.addSyncStanzaListener(this, new StanzaTypeFilter(org.jivesoftware.smack.packet.Message.class)); 
} 
+0

我已經嘗試連接兩個。但他們都給我同樣的錯誤。 – Newbiee

+0

我將用我在我的應用程序中用於連接的代碼編輯我的答案 –

+0

您是否禁用了SecurityMode?你嘗試打開你的Openfire管理員,並在服務器配置/客戶端連接/純文本(與STARTTLS)連接/高級設置 並將STARTTLS策略設置爲禁用? –

0

嗨,我已經實施了xmpp和以下的github鏈接有example.Try跟進的事情。

https://github.com/saveendhiman/XMPPSample_Studio

這裏,你是根據失蹤me.You不得不提到端口number.Specified的XMPP是5222

ConnectionConfiguration config = new ConnectionConfiguration(HOST1, 
      5222); 
    SmackConfiguration.DEBUG_ENABLED = true; 
    SASLAuthentication.supportSASLMechanism("MD5", 0); 
    System.setProperty("smack.debugEnabled", "true"); 
    config.setCompressionEnabled(false); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setReconnectionAllowed(true); 
    config.setSendPresence(true); 
    config.setRosterLoadedAtLogin(true); 

試試這個,你仍然有任何錯誤或異常則告訴我。

謝謝你希望這會幫助你。

+0

我已經這樣做了,事情是我無法登錄,創建新用戶後,當我嘗試登錄它顯示身份驗證失敗。但是如果我在火花中使用那個憑證,它會連接。 – Newbiee

+0

好吧。如果你有任何問題,你可以參考上面寫給我的代碼。所以我可以幫你解決任何問題。 – Saveen

+0

好吧我會在嘗試後讓你知道:) – Newbiee

0

請檢查:

  1. 你打開5222和5223端口您的Openfire服務器上?我有像你這樣的「無法連接」錯誤,所有東西都可以,但我沒有打開5222和5223端口來連接。再次

  2. 檢查服務器上的安全配置來設置正確的配置客戶端

    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);