2013-01-24 47 views
1

我正在開發一個應用程序,可以響應用戶的聊天消息。我需要知道聊天消息發件人的IP地址。我正在Google app引擎上開發我的應用程序,並使用XMPP協議進行聊天。如何使用XMPP協議檢測聊天消息發件人的IP地址?如何在Google App Engine中使用XMPP協議獲取聊天消息發件人的IP地址?

+0

如果你控制客戶端/應用程序和信任是不是一個問題,使其探測自己的IP並把它作爲消息的一部分。 – tesdal

回答

1

只有XMPP服務器知道IP地址。如果您控制XMPP服務器,則可以編寫擴展名,以便以某種方式在消息中包含IP地址(或檢查是否已有可用的IP地址)。

+0

你可以在技術上做到這一點,但請不要除非你擁有所涉及的所有機器,網絡和用戶。人們對他們的IP地址泄漏非常不滿,如果客戶端和服務器之間存在NAT,它甚至不會按照您的預期工作。 –

0

How to get my public IP from XMPP bind message?

http://xmpp.org/extensions/xep-0279.html


首先客戶端發送一個IQ-get請求其服務器。

實施例1客戶端從服務器

<iq from='[email protected]/orchard' 
    id='ik2s7159' 
    type='get'> 
    <address xmlns='urn:xmpp:sic:1'/> 
</iq> 

然後,服務器返回一個包含含有元素指定客戶端的外部IP地址的元素和,任選地,元件的IQ結果請求其IP地址指定客戶端的外部端口。

例2服務器返回的IP地址和端口

<iq id='ik2s7159' 
    to='[email protected]/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='[email protected]/orchard' 
    type='result'> 
    <address xmlns='urn:xmpp:sic:1'> 
    <ip>2001:db8::9:1</ip> 
    <port>12345</port> 
    </address> 
</iq> 
+0

歡迎來到Stack Overflow。請總結你答案中的鏈接;這樣,如果鏈接失效,答案不會完全無用。 – michaelb958

相關問題