我正在开发一个可以回复用户聊天消息的应用。我需要知道聊天消息发送者的IP地址。我在谷歌应用引擎上做我的应用程序,并使用XMPP协议进行聊天。如何使用XMPP协议检测聊天消息发送方的IP地址?
答案 0 :(得分:1)
只有XMPP服务器知道IP地址。如果您控制XMPP服务器,您可以编写一个扩展名,以某种方式在消息中包含IP地址(或检查是否已有)。
答案 1 :(得分:0)
How to get my public IP from XMPP bind message?
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>