无法连接到 ejabberd 服务器:未知主机异常

Posted

技术标签:

【中文标题】无法连接到 ejabberd 服务器:未知主机异常【英文标题】:could not connect to ejabberd server: unknown host exception 【发布时间】:2014-08-13 04:38:07 【问题描述】:

连接到 ejabberd 服务器时出现未知主机异常。

public static final String HOST = "http://54.254.220.129:5280/admin";
public static final int PORT = 5222;
public static final String SERVICE = "localhost";
public static final String USERNAME = "admin@localhost";
public static final String PASSWORD = "########";



ConnectionConfiguration connConfig = new ConnectionConfiguration(HOST, PORT, SERVICE);
XMPPConnection connection = new XMPPConnection(connConfig);
enter code here
            try 
                connection.connect();
                Log.i("XMPPChatDemoActivity",
                        "[SettingsDialog] Connected to "
                                + connection.getHost());
             catch (XMPPException ex) 
                Log.e("XMPPChatDemoActivity",
                        "[SettingsDialog] Failed to connect to "
                                + connection.getHost());
                Log.e("XMPPChatDemoActivity", ex.toString());
                setConnection(null);
            

任何答案都将是可观的! 谢谢

【问题讨论】:

我不知道为什么这个问题被否决了。我在堆栈溢出中尝试了许多解决方案。但我无法确定我的问题是什么。但是在我的问题得到了一些好的回答之后,我发现了我在代码中犯的错误。感谢团队堆栈溢出和一个建议,如果任何人对问题投反对票,请让他们发表评论,这将更有帮助像我这样的初学者 【参考方案1】:

传统的 XMPP 不使用 HTTP

您无法连接到http://54.254.220.129:5280/admin(这是针对浏览器的!)

您只需要使用 IP 地址

public static final String HOST = "54.254.220.129";

【讨论】:

嗨马丁感谢您的支持。我不知道 XMPP 服务器。你能告诉我如何将 eJabberd 服务器用于我的聊天应用程序。我已经有一个 xmpp 客户端。及以上ip本身包含一个网页。我将 XMPP 服务器安装到 54.254.220.129:5280/admin 。如果我使用 ip 什么是 XMPPConnection 中的 mt SERVICE_NAME 端口 5280 服务于 html 网页,与 XMPP 没有任何关系。使用 XMPP 客户端连接到 5222。我建议您只使用new ConnectionConfiguration("54.254.220.129", 5222);,这样您现在可以避免使用服务名称。 但现在它显示 XMPPError connected to 54.254.220.129:5222.: remote-server-error(502) XMPPError connected to 54.254.220.129:5222。 -- 引起:java.net.ConnectException: failed to connect to /54.254.220.129 (port 5222): connect failed: ETIMEDOUT (Connection timed out)【参考方案2】:

在您的主机字符串中,您已经写了端口号。所以我认为你只需要写没有端口和管理员的IP地址,比如http://54.254.220.129。 - 之后尝试连接。并尝试登录。

试试这个;

public static final String HOST = "http://54.254.220.129";
public static final int PORT = 5222;
public static final String SERVICE = "localhost";
public static final String USERNAME = "admin@localhost";
public static final String PASSWORD = "########";

ConnectionConfiguration connConfig = new ConnectionConfiguration(HOST, PORT, SERVICE);
XMPPConnection connection = new XMPPConnection(connConfig);

connection.connect();
connection.login(USERNAME, PASSWORD);

【讨论】:

感谢您的支持,现在我可以连接主机了 还有一件事 5222 是为 C2S 连接保留的。所以只需要 ip 作为主机,没有 http://

以上是关于无法连接到 ejabberd 服务器:未知主机异常的主要内容,如果未能解决你的问题,请参考以下文章

Mcabber:无法连接到服务器(Ejabberd)

无法使用 strophe 连接到 eJabberd 服务器

连接到 ejabberd

无法使用 Asmack 连接到我的 ejabberd 服务器

无法使用 react-native-xmpp 连接到 Ejabberd 服务器

无法将 agsXmpp 客户端连接到 eJabberd 服务器