如何从一个Android设备发送数据到另一个?

大家好,我想知道我们有什么select在两个不同的Android设备之间交换数据

例如,用户A和用户B都安装我的应用程序。 我希望用户A向用户B发送数据 (可能只是简单的消息或用户A的位置信息)。

我需要的function类似于WhatsApp的function。 然而不像WhatsApp,我没有服务器,我想知道如果我们可以做两个不同的android设备之间的数据交换没有服务器?

我想我们build立在SMS或什么东西。

Solutions Collecting From Web of "如何从一个Android设备发送数据到另一个?"

在设备之间交换信息的选项如下:

  • 蓝牙 – 这将在附近的两个设备之间
  • TCP / UDP IP连接 – 这将使用TCP直接打开一个套接字到另一个服务器套接字。 这可以托pipe在电话或共享服务器上。 两者都有优点和缺点。

蓝牙的优点是不需要中央服务器。 大的缺点是这意味着你只能在20米范围内的两个人之间交换数据。 另一个缺点是你必须配对不是每个人都觉得最简单的设备。

就像您在传统计算机上编写的任何客户端 – 服务器程序一样,您可以使用TCP / IP连接来交换数据。 无论您的手机使用3G / 4G / WIFI / EDGE还是未来的无线协议,都可以使用此function。 问题是电话的IP地址可能不是全球可达的。 电话的IP地址可能不像专用IP那样可路由。 他们可能在防火墙或NAT地址后面。

这是中央服务器可能需要为用户交换IP地址,或作为可能阻止的基础设施背后的客户的公共位置。 这就是SWIFT这样的协议可以用来跳转防火墙的地方。 即使像P2P这样的东西,你仍然遇到这些types的问题与不可访问的设备,像这样的技巧必须被用来抓取他们周围。 不幸的是,这意味着你可能需要一个中央服务器,即使是P2P模式。

如果没有外部服务器来保存所有连接客户端的列表,则需要以P2P方式实现通信。 根据您的应用程序的需要,您可以让用户input他们想要与其交换数据的其他用户的IP地址/电子邮件/电话号码。

如果您希望使用服务器方式,则可以注册具有良好Eclipse集成的 Google App Engine以及一个可轻松与Android应用程序对接的插件。 这将给你一个基础设施的select,而不是最初(或者可能从来不取决于你的规模有多高)不得不放下任何钱。

Google给出了一个很好的IO谈话,展示了一个可以轻松与Android应用程序通信的Web应用程序示例。 你可以扩展这个来做你正在做的事情。