使用 java 连接到 xmpp(openfire) 服务器时出错

Posted

技术标签:

【中文标题】使用 java 连接到 xmpp(openfire) 服务器时出错【英文标题】:error in connect to xmpp(openfire) server using java 【发布时间】:2015-02-25 23:03:16 【问题描述】:

我是 XMPP 的新手。一整天,我一直在从 Java 连接到我的 XMPP 服务器(Openfire 版本 3.9.3)。我正在使用 Smack(版本 4.0.7)库。这是简单的代码...

ConnectionConfiguration config =new ConnectionConfiguration("servername",5223);
XMPPTCPConnection connection = new XMPPTCPConnection(config);
    // Connect to the server
    try 
            connection.connect();
        connection.login("username", "password");

          catch (IOException e) 
            e.printStackTrace();
         catch (XMPPException e) 
            e.printStackTrace();
         catch (SmackException e) 
            e.printStackTrace();
         

但是当我运行此代码时,会显示此错误...

org.jivesoftware.smack.SmackException$NoResponseException
at org.jivesoftware.smack.XMPPConnection.throwConnectionExceptionOrNoResponse(XMPPConnection.java:548)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.throwConnectionExceptionOrNoResponse(XMPPTCPConnection.java:867)
at org.jivesoftware.smack.tcp.PacketReader.startup(PacketReader.java:113)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.initConnection(XMPPTCPConnection.java:482)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:440)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:811)
at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:396)
at test.third.<init>(third.java:19)
at test.third.main(third.java:34)

可能有一个愚蠢的错误和简单的解决方案。我用谷歌搜索,但不知何故我没有得到正确的解决方案。

【问题讨论】:

【参考方案1】:
public  void connectAndLogin( 

    connect();
    login();



private void connect() 
    /**
     * Set server configuration
     * 
     * connect to server    
     */
    setConfiguration();
    try 
        getConnection().connect();
     catch (XMPPException e) 
        e.printStackTrace();
        setConnection(null);
    
    

    private void setConfiguration() 
        ConnectionConfiguration config = new ConnectionConfiguration(Constants.IP);
        SmackConfiguration.setPacketReplyTimeout(Constants.PACKET_TIME_OUT);
        System.out.println(SmackConfiguration.getVersion());
        config.setRosterLoadedAtLogin(false);
        // config.setCompressionEnabled(true);
        config.setVerifyChainEnabled(false);
        config.setReconnectionAllowed(true);
        config.setSASLAuthenticationEnabled(false);
        config.setSecurityMode(SecurityMode.disabled);
        config.setDebuggerEnabled(false);
        connection = new XMPPConnection(config);


private void login() 
    if(getConnection()!=null)


    String USER_NAME="";

    String PASSWORD="";

    try 
        getConnection().login(USER_NAME,PASSWORD, Constants.RESOURCE);
     catch (Exception e) 
        e.printStackTrace();
    



    

【讨论】:

【参考方案2】:

尝试使用端口 5222 而不是 5223。这是旧的 SSL 方式,通常不再使用。

【讨论】:

以上是关于使用 java 连接到 xmpp(openfire) 服务器时出错的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Gloox Xmpp 客户端连接到 Openfire 服务器

无法连接到本地 Openfire 服务器(使用 smack api)

XMPP Openfire 连接被拒绝

使用openfire在xmpp中几秒钟后连接断开

节点连接到本地主机中的 Xmpp 服务器

我在使用 smack 4.2 Openfire 创建 XMPP 客户端时遇到问题