【问题标题】:XMPP Server, smack API connectivityXMPP 服务器,smack API 连接
【发布时间】:2023-03-24 06:05:01
【问题描述】:

我正在尝试连接到 Tigase 服务器,使用 smack API 在 Java 中实现客户端。

    ConnectionConfiguration config = new ConnectionConfiguration("192.32.104.93", 5222, "ELVES-D463645");
    Connection connection =  new XMPPConnection(config);
    connection.connect();

当代码到达连接时。我得到以下堆栈跟踪。

stream:error (host-unknown)
    at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:214)
    at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
    at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
No response from the server.: 
    at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:73)
    at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:230)
    at org.jivesoftware.smack.Connection.login(Connection.java:366)
    at com.directv.xmpp.client.poc.FirstClient.main(FirstClient.java:20)
XMPPException Occured while connecting to server No response from the server.

谁能帮我看看,我哪里出错了。谢谢!

【问题讨论】:

    标签: java xmpp smack tigase


    【解决方案1】:

    我找到了解决办法。

    我在错误的地方输入了服务名称和主机名。

    因为我的服务器是本地托管的。以下代码存根用于与 Tigase 服务器的连接。

    ConnectionConfiguration config = new ConnectionConfiguration("localhost", 5222, "yourdomain");
    

    yourdomain 应该是之前在安装和配置服务器时输入的域名。

    感谢大家的帮助。

    【讨论】:

    • 那么请考虑为您认为有帮助的答案点赞。
    • 我找到了解决方案,而不是这里的任何答案。我是自学的,在这里回复一下答案,希望对大家有用。
    【解决方案2】:
    ConnectionConfiguration config = new ConnectionConfiguration("192.32.104.93", 5222, "ELVES-D463645");
    

    ConnectionConfiguration constructor 的第三个参数 serviceName 似乎是错误的。我希望这里有一个域(example.com)。

    【讨论】:

    • 我在本地托管了一个 Tigase XMPP 服务器,这是我在安装和配置时使用的域名。默认出现的域名是我在网络上的机器名。
    • ELVES-D463645 不是一个有效的 DNS 域,也不是一个有效的 XMPP 服务名,这是预期的。
    【解决方案3】:

    你甚至没有到达 Tigase 服务器。该错误似乎与 DNS 的配置或传递给 Smack 库的参数有关。 我不知道 Smack API,但从您附加的错误来看,您似乎提供了不正确的主机名,或者至少是一个没有正确 DNS 条目的主机名。 这很好,如果您也可以提供 IP 地址,您应该仍然能够连接到服务器。

    【讨论】:

    • 当我在本地托管 Tigase XMPP 服务器时,您认为主机名应该是“localhost”吗?
    【解决方案4】:

    试试下面,或者检查你的 XMPP 服务器身份验证设置

    ConnectionConfiguration config = new ConnectionConfiguration(XMPP_HOST, XMPP_PORT);
    config.setCompressionEnabled(false);
    config.setSASLAuthenticationEnabled(false);
    connection = new XMPPConnection(config);
    

    【讨论】:

    • 感谢Browny Lin,但我什至无法访问服务器,一些配置问题,但我一定会按照您的建议尝试,一旦我到达服务器。顺便说一句,我忘了提及,我使用的是本地托管的 Tigase XMPP 服务器。谢谢。
    【解决方案5】:

    这是Smack 4.3.4的代码

     XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder()
                    .setHostAddress(InetAddress.getByName(host))
                    .setXmppDomain(JidCreate.domainBareFrom(Domain))
                    .setUsernameAndPassword("username", "password")
                    .setPort(5222) 
                    .build();
            AbstractXMPPConnection connection = new XMPPTCPConnection(conf);
            connection.connect();
            connection.login();
    

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 2016-11-05
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多