我计划为Android制作一个P2P聊天应用程序:
所以这是我的想法:
这个想法很简单(也许太简单了?)但这个想法似乎存在固有的问题。
使用NAT和动态IP查找实际的IP可能很困难。
即使客户端定期更新服务器上的IP地址(我们可以从设备本身获取本地IP,我们也可以从服务器获取公共IP),当我需要打开设备的套接字时,ip地址是什么打开插座?公共或本地IP?
显然打开一个本地ip的套接字无法正常工作,但是如果我打开一个套接字到公共IP(而我朋友的客户端正在另一端监听),该消息应该如何到达我的freind的设备? / p>
答案 0 :(得分:0)
您不能使用私人地址,因为它们不在公共互联网上路由,因此您需要使用公共IP。找到真实的IP地址可能并不那么困难,因为对服务器的请求将来自该公共IP。真正的挑战是如何缓解PAT(NAT)创建的问题。您可以尝试使用IGD协议(UPnP)来自动配置端口映射,但不是每个路由器都支持它。您也可以使用UPnP来获取公共IP。