2010-09-02 31 views
1

我正在爲Android安裝即時消息應用程序。 該應用程序由一個服務器和客戶端組成,都位於android上。 啓動時,應用程序向Web服務器註冊。 如果客戶端想要將IM發送到NAT路由器後面的服務器,該如何實現? 我聽說過stun4j和jstun,但沒有發現他們在android中使用的例子。 謝謝!安卓後面的NAT-路由器上的即時消息服務器

回答

0

stun4j不是一個適用於所有NAT的通用解決方案。

最簡單&最可靠的解決方案是通過外部網絡服務器發送帶有已知地址的消息。

+0

你的意思是說,如果A想要發送給B(都在NAT之後),則: A發送到網絡服務器並且網絡服務器發送到B. 網絡服務器如何發送到B? – user437731 2010-09-02 10:25:38

+0

B通過持久連接輪詢來自web服務器的消息。 彗星狀。 – BarsMonster 2010-09-02 15:08:48

1

爲什麼服務器必須在設備上?

這似乎無效,android作爲一個典型的客戶端設備功能最好。

製作即時消息應用程序非常簡單。

只要客戶端發送消息到網絡服務器,存儲它們。
讓其他客戶端等待或輪詢來自Web服務器的消息。

無論互聯網連接類型如何,這都可以工作。

如果你堅持在設備上安裝服務器,我認爲你會得到最接近的解決方案就是使用某種upnp庫。

隨着upnp,你可以告訴路由器自動設置一個NAT到你的服務器的端口。

這對於在路由器中禁用upnp的用戶不起作用。