我正在开发一个可以响应用户聊天消息的应用程序。我需要知道聊天消息发送者的 IP 地址。我在谷歌应用引擎上做我的应用程序,并使用 XMPP 协议进行聊天。如何使用 XMPP 协议检测聊天消息发送者的 IP 地址?
问问题
4159 次
2 回答
2
只有 XMPP 服务器知道 IP 地址。如果你控制 XMPP 服务器,你可以编写一个扩展,以某种方式在消息中包含 IP 地址(或检查一个是否已经可用)。
于 2013-01-24T07:55:03.110 回答
0
http://xmpp.org/extensions/xep-0279.html
首先,客户端向其服务器发送一个 IQ-get 请求。
示例 1.客户端向服务器请求其 IP 地址
<iq from='romeo@montague.lit/orchard'
id='ik2s7159'
type='get'>
<address xmlns='urn:xmpp:sic:1'/>
</iq>
然后,服务器返回一个 IQ 结果,其中包含一个元素,该元素包含一个指定客户端外部 IP 地址的元素,以及一个可选的指定客户端外部端口的元素。
示例 2.服务器返回 IP 地址和端口
<iq id='ik2s7159'
to='romeo@montague.lit/orchard'
type='result'>
<address xmlns='urn:xmpp:sic:1'>
<ip>192.168.4.1</ip>
<port>12345</port>
</iq>
请注意,IP 地址可以是 IPv4 或 IPv6。
示例 3.服务器返回 IPv6 地址
<iq id='ik2s7159'
to='romeo@montague.lit/orchard'
type='result'>
<address xmlns='urn:xmpp:sic:1'>
<ip>2001:db8::9:1</ip>
<port>12345</port>
</address>
</iq>
于 2013-07-06T15:40:59.307 回答