套接字编程WiFi问题

时间:2012-03-05 13:31:12

标签: android sockets ip wifi p2p

我正在实现移动聊天应用程序,我正在使用套接字连接来实现p2p连接。我的聊天与Android设备工作正常。我的问题是我可以连接3g网络中的设备或者在同一个WiFi网络中连接设备但是当WiFi外部的设备表单尝试连接WiFi网络中的设备时,连接无法正常工作。我知道这是因为WiFi分配的设备的本地IP。如何在WiFi中root和连接设备?

2 个答案:

答案 0 :(得分:0)

听起来更像是路由器设置问题,而不是应用程序问题(意味着您的应用的用户也需要为自己的网络执行此操作)。

您的wifi路由器需要知道如何将通信转发到您的设备。因此,假设您的应用程序正在端口1234上连接,那么您需要告诉路由器将端口1234上的外部通信转发到WiFi网络中手机的内部IP。

网络外部的电话应定位到网络的外部IP和端口1234.

答案 1 :(得分:0)

Sajan,您的问题不仅是IP映射问题,还是NAT遍历问题。在NAT中打孔并不总是可行的。如果是这样,必须使用一些复杂的技术,包括位于wifi / lan外部的超级同伴,它将从你的内部同伴那里读取翻译后的地址。

除非您使用UDP并且NAT是友好的,否则无法直接向内部对等方发送TCP通信。在大多数情况下,您必须检查NAT的可能性,如果有可能,您需要执行映射预测并告诉对等方尝试使用预测的IP地址。

如果您不希望用户必须配置其NAT,则该选项有效。即使在这种情况下,这样的配置也不总是足够的(例如,如果存在级联的NAT或代理)。