XMPP 主机名问题

Posted

技术标签:

【中文标题】XMPP 主机名问题【英文标题】:XMPP hostname issue 【发布时间】:2014-06-15 02:54:25 【问题描述】:

我在 ios 中使用 Openfire 和 xmpp,我无法完成连接,这是我的代码:

[self.xmppStream setHostName:@"openfire.example.net"];
[self.xmppStream setHostPort:5222];

我收到消息无法连接到服务器。检查 xmppStream.HostName。

我检查了我的 openfire 配置,它是:

服务器名称:openfire.example.net

但是也有主机名:Decuirs-MacBook-Pro.local

配置的正确名称是什么?我还有 2 个预先创建的用户:

jdecuirm@openfire.example.net 但我没有到达 openfire,希望你能提供帮助。

编辑:

大家好,你进入了 openfire.xml 配置文件,我只有这个:

-->
<!-- root element, all properties must be under this element -->
<jive> 
  <adminConsole> 
    <!-- Disable either port by setting the value to -1 -->  
    <port>9090</port>  
    <securePort>9091</securePort> 
  </adminConsole>  
  <locale>en</locale>  
  <!-- Network settings. By default, Openfire will bind to all network interfaces.
      Alternatively, you can specify a specific network interfaces that the server
      will listen on. For example, 127.0.0.1. This setting is generally only useful
       on multi-homed servers. -->  
  <!--
    <network>
        <interface></interface>
    </network>
    -->  
  <connectionProvider> 
    <className>org.jivesoftware.database.EmbeddedConnectionProvider</className> 
  </connectionProvider>  
  <setup>true</setup> 
</jive>

这部分是否与我无法连接到 xmpp 相关?希望你能帮忙。

【问题讨论】:

openfire.example.net 是否解析为您服务器的 IP 地址? IE。如果您进入终端 (Mac) 或命令提示符 (Windows) 并键入“ping openfire.example.net”,您会收到服务器的响应吗?仅在配置文件中输入主机名是不够的。它也需要在 DNS 中 嗨,我确实对 openfire.chatme.net 进行了 ping,它正在发送数据 Paul,这是我从 72.52.4.91 ping 64 个字节时得到的结果:icmp_seq=0 ttl=247 time=716.578 ms 64 72.52.4.91 中的字节:icmp_seq=1 ttl=247 时间=110.587 毫秒 72.52.4.91 中的 64 字节:icmp_seq=2 ttl=247 时间=131.038 毫秒 72.52.4.91 中的 64 字节:icmp_seq=3 ttl=247 时间=108.077 毫秒 然后你应该检查你是否可以连接到服务器使用“telnet openfire.chatme.net 5222”如果你没有成功连接那么它可能是防火墙或者你的服务器不是运行 嗨,保罗,我检查了设置中的面板,它说正在运行,但 telnet 确实不起作用。我如何检查防火墙?如果我在本地做,它也会影响吗?感谢保罗的回复 嗨,保罗,我最近检查了防火墙配置,它已被停用。我现在能做什么?感谢您的回复。 【参考方案1】:

在正确配置的环境中,您应该只指定 JID 和密码,并且从不触摸主机名和端口。应通过 DNS 查询获取所有必需的信息。

但是在你的设置中:openfire.example.net 是一个服务器名,但是为什么你写不存在的服务器名呢?客户端如何找到服务器?是的,您可以致电setHostName:@"Decuirs-MacBook-Pro.local",如果此名称在您的本地网络中公开可见(并且仅在本地网络中)-它将连接。您也可以使用本地 IP,例如192.168.1.2 作为主机名。

【讨论】:

嗨vitalyster,事实上我确实连接了Decuirs-Macbook-Pro.local,但现在我正在使用iOS设备,我遇到了无法连接的问题,你怎么推荐我配置openfire服务器,使其可以访问?我会感谢你的建议! @user3741129 你应该了解 TCP/IP 和 DNS 是如何工作的:1)openfire 是一个 TCP 服务器,它“监听”机器 IP 上的连接 2)DNS 服务器有助于通过名称找到所需的 IP 如何您想通过本地 Wifi 或 3G 网络查找服务器?如果您想通过 3G 或任何其他公共互联网连接访问您的服务器,您首先应该有公共 IP 地址和 DNS 记录。 好吧,暂时可以通过wifi在本地进行测试吗?你是完全正确的,拥有一个公共 IP 地址我应该租用服务或其他什么?真的,我不是服务器端程序员vitalyster!所以你给我的每一种帮助都会非常感激 对于本地wifi连接,您只需将主机名设置为openfire机器的本地IP,检查Mac上的sudo ifconfig输出,192.168.1.2或类似的东西。 您好,我执行了命令,我可以看到 ip 地址,通过执行本地操作是指在我的 mac 中使该 ip 静态?【参考方案2】:

可以设置一个私有 xmpp 服务器在他们的本地网络上进行内部测试。服务器的 xmpp 域可能类似于“testing.mycompany.com”,但由于服务器是内部服务器,因此使用 IP(192.168.1.22)作为主机名进行连接。

正确的连接需要到 IP (192.168.1.22) 的 TCP 连接,但是 xmpp 握手需要 xmpp 域 (testing.mycompany.com)。

[xmppStream setHostName:@"192.168.1.22"];
[xmppStream setHostPort:5222]; //Default

【讨论】:

以上是关于XMPP 主机名问题的主要内容,如果未能解决你的问题,请参考以下文章

怎么更改主机名

主机名与规范主机名

centos7主机名修改

SUSELinux 11 修改 查看主机名 计算机名

如何修改ESXi的主机名?

如何修改linux主机名?