大家好,我想知道我们有什么选择在两个不同的Android设备之间交换 data ?
例如,User-A和User-B都安装了我的应用程序。我希望User-A向用户B发送数据(可能只是一条简单的消息或用户A的位置信息)。
我需要的功能类似于WhatsApp所具有的功能。然而,与WhatsApp不同,我没有服务器,我想知道我们是否可以在没有服务器的情况下在两个不同的Android设备之间进行数据交换?
我在想我们是在短信或其他什么地方建立的。
答案 0 :(得分:11)
在设备之间交换信息的选项如下:
蓝牙的优点是不需要中央服务器。最大的缺点是,这意味着您只能在20米范围内的两个人之间交换数据。另一个缺点是你必须配对并非每个人都认为最简单的设备。
您可以使用TCP / IP连接来交换数据,就像您在传统计算机上编写的任何客户端 - 服务器程序一样。无论您的手机是使用3G / 4G / WIFI / EDGE还是未来的无线电协议,都可以使用此功能。问题是手机的IP地址可能无法全局访问。手机的IP地址可能像私有IP一样不可路由。它们可能位于防火墙或NAT地址后面。
这可能需要中央服务器来为用户交换IP地址,或者作为可能阻止的基础设施后面的客户端的公共位置。这就是像SWIFT这样的协议在跳转防火墙时派上用场的地方。即使像P2P之类的东西,你仍然会遇到使用不可访问设备的这些类型的问题,并且必须使用这样的技巧来抓取它们。不幸的是,这意味着即使使用P2P模型,您也可能需要一个中央服务器。
答案 1 :(得分:2)
如果没有外部服务器来保存所有连接客户端的列表,则需要以P2P方式实现通信。根据您的应用需求,您可以让用户输入他们想要与之交换数据的其他用户的IP地址/电子邮件/电话号码。
如果您希望使用服务器方法,则可以注册Google App Engine,该Eclipse integration具有良好的Android以及插件,可以轻松与IO talk应用程序进行交互。这将为您提供一个基础设施选项,而不是最初(或者可能永远不会取决于您的规模有多高)不得不放下任何钱。
Google提供了一个很好的{{3}},展示了一个可以轻松与Android应用进行通信的网络应用示例。你可以扩展它来做你想做的事。