Android的P2P聊天客户端

时间:2013-08-05 09:24:25

标签: android sockets networking nat instant-messaging

我计划为Android制作一个P2P聊天应用程序:

所以这是我的想法:

  1. 客户端将连接到服务器以下载(朋友的)IP地址列表
  2. 然后它将尝试打开一个套接字到朋友的IP地址(在指定的端口上)并将其写入套接字
  3. 朋友的客户将打开一个插座并从那里阅读。
  4. 这个想法很简单(也许太简单了?)但这个想法似乎存在固有的问题。

    使用NAT和动态IP查找实际的IP可能很困难。

    即使客户端定期更新服务器上的IP地址(我们可以从设备本身获取本地IP,我们也可以从服务器获取公共IP),当我需要打开设备的套接字时,ip地址是什么打开插座?公共或本地IP?

    显然打开一个本地ip的套接字无法正常工作,但是如果我打开一个套接字到公共IP(而我朋友的客户端正在另一端监听),该消息应该如何到达我的freind的设备? / p>

1 个答案:

答案 0 :(得分:0)

您不能使用私人地址,因为它们不在公共互联网上路由,因此您需要使用公共IP。找到真实的IP地址可能并不那么困难,因为对服务器的请求将来自该公共IP。真正的挑战是如何缓解PAT(NAT)创建的问题。您可以尝试使用IGD协议(UPnP)来自动配置端口映射,但不是每个路由器都支持它。您也可以使用UPnP来获取公共IP。