关于在wifi环境下,使用UDP和外网服务器通讯的问题。
我的问题如下:
Android手机端作为客户端,服务器端在PC上,有公网的IP。
两者通过UDP通讯。
现在的问题是,如果手机端连接3G,可以与服务器端进行正常的通讯。互相可以接收和发送。
但是,如果手机连接的WIFI(WIFI可以连接外网)的话,服务器可以接受到消息,但是发送回去的话,手机端接收不到。
现在我的疑问有:
1. 手机连3G的时候,不也是在运营商的内网中么?手机先给服务器发消息,在运营商的转发路由器中是不是就已经记录了映射关系?否则服务器应该是找不到手机的。
2. 手机连WIFI的时候,服务器可以接受到,说明网络是联通的。这个时候运营商的转发路由器中应该也是记录了相应的映射关系。但是这个关系是我手机所连接的路由器和服务器间的关系。
我的猜测是,服务器发消息的时候,通过运营商的转发路由器,到我手机连接的路由器,但是这个路由器无法找到我的手机,所以手机端接受不到。
不知道理解的是否正确。
如果是这样的,那我如何给手机连接的路由器增加相应的映射关系。应该是可以通过代码修改吧?
我看了半天,只有NAT的概念,具体的不知道是怎么处理的。
我觉得做网络通讯的,应该对这个问题会比较了解。比如,我们使用QQ的时候,手机连接WIFI,是可以正常使用的。他们是如何做的?
所以,不知各位可否解答一下我心中的疑惑。谢谢。