1

我正在开发一个聊天应用程序。

但是现在只有谷歌可以聊天,因为我只知道谷歌的端口号。

xmppClient = [[XMPPClient alloc] init];
[xmppClient addDelegate:self];

// Replace me with the proper domain and port.
// The example below is setup for a typical google talk account.
[xmppClient setDomain:@"talk.google.com"];
[xmppClient setPort:5222];

可以看到,google 已将 5222 设置为端口号。

同样,我想为 yahoo、windows messenger 和其他流行网站设置端口号,我怎样才能得到所有这些?

(是这样的吗?“XMPP 是谷歌专用的”??)

4

3 回答 3

4

Kraken 的 Openfire 属性页面包含您需要的端口和域信息。只需重新使用并尝试使用您的应用程序。

于 2009-11-21T22:25:18.083 回答
2

5222/tcp 是 XMPP 的默认端口,但您的实现可能有不同的端口。要找出答案,您可以对 进行DNS SRV查询_xmpp-client._tcp.YOURDOMAIN,并将其中的内容替换YOURDOMAIN为您尝试连接的域。这将返回 0+ 条记录,其中包含有关如何连接的主机名/端口组合。如果你得到 0 条记录,假设端口 5222。

例如,我想连接到 GoogleTalk 服务器,并使用帐户登录foo@gmail.com。我的客户端执行可以在命令行上使用 dig 模拟的查找,如下所示:

% dig +short -t SRV _xmpp-client._tcp.gmail.com.
20 0 5222 talk1.l.google.com.
20 0 5222 talk4.l.google.com.
5 0 5222 talk.l.google.com.
20 0 5222 talk3.l.google.com.
20 0 5222 talk2.l.google.com.

具有最低优先级的结果是,这意味着您在端口 5222 上5 0 5222 talk.l.google.com.打开了一个 TCP 连接。talk.l.google.com

要从代码中进行 SRV 查询,请查看这个依赖于 DNSServiceQueryRecord 的答案。

于 2009-12-09T20:28:35.490 回答
0

5222 是 XMPP 的默认端口,但您的实现可能有不同的端口。为了找出答案,您对 _xmpp-client._tcp.DOMAIN_Name 执行 DNS 服务器查询,将 DOMAIN_Name 替换为您尝试连接的域(例如 gmail.com、google.com、yahoo.com)。这将返回 0+ 条记录,其中包含有关如何连接的主机名/端口组合。如果你得到 0 条记录,假设端口 5222。

于 2011-04-20T09:56:54.783 回答