2012-03-05 43 views
0

我正在實現一個移動聊天應用程序,我正在使用socket連接來實現p2p連接。我的聊天工作正常與Android設備。我的問題是我可以連接3g網絡中的設備或與同一個WiFi網絡連接,但當WiFi外的設備嘗試連接WiFi網絡中的設備時,連接不起作用。我知道這是因爲WiFi分配的設備的本地IP。如何在WiFi中對設備進行根和連接?Socket編程WiFi問題

回答

0

聽起來更像是路由器設置問題,而不是應用程序問題(意味着您的應用程序的用戶也需要爲自己的網絡執行此操作)。

您的wifi路由器需要知道如何將通信轉發到您的設備。因此,假設您的應用程序正在連接端口1234,那麼您需要告訴路由器將端口1234從外部的通信轉發到您的WiFi網絡中的手機的內部IP。

的手機,在網絡之外應該將廣告網絡的外部IP和端口1234

0

Sajan,您的問題不僅是一個IP映射的問題,也是一個NAT穿越問題。在NAT中打洞並不總是可能的。如果是這樣,它必須使用一些複雜的技術來完成,包括位於您的wifi/lan之外的超級對等設備,它將從您的內部對等設備讀取已翻譯的地址。

除非你使用UDP並且NAT是友好的,否則不可能將TCP通信直接發送給內部對等體。在大多數情況下,你必須檢查NAT的可能性,如果有可能的話,你需要執行映射預測,並告訴兩個對端嘗試com預測的IP地址。

如果你不希望你的用戶必須配置他們的NAT,這是有效的。即使在這種情況下,這種配置並不總是足夠的(例如,如果存在級聯的NAT或代理)。