2009-11-21 76 views
1

我正在开发聊天应用程序。如何获取iPhone聊天应用程序的端口号

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

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]; 

你可以看到,谷歌已经将5222设置为端口号。

同样的方式我想为雅虎设置端口号,windows messenger &其他热门网站,我怎样才能得到所有这些?

(是类似的东西 - “XMPP是特定于谷歌的人”?)

+0

这属于superuser.com – 2009-11-22 02:03:04

+0

它可以在任一.. – 2009-11-22 13:36:21

回答

2

5222/tcp是XMPP的默认端口,但您的实现可能有不同的端口。为了找出答案,你需要DNS SRV查询_xmpp-client._tcp.YOURDOMAIN,在那里你用你试图连接的域替换YOURDOMAIN。这将返回0+记录,其中包含主机名/端口组合以便连接。如果返回0记录,则假定端口为5222.

例如,我想连接到GoogleTalk服务器,并使用帐户[email protected]登录。我的客户端执行,可与挖模拟在命令行上像这样的查询:

% 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. 

优先级最低的数字结果是5 0 5222 talk.l.google.com.,这意味着你打开端口5222

的TCP连接 talk.l.google.com

要从代码中进行SRV查询,请查看this answer,它依赖于DNSServiceQueryRecord。

0

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