点对点通信选项

任何人都可以确认Android框架内目前允许的点对点通信方法是什么? 我需要传输jsonstring,而且我目前使用的SMS工作正常,但问题是数据也以许多文本消息结束。 我读过Reto Meier的专业Android应用程序开发第一版,他说,由于安全问题,数据传输选项没有实现。

这一切都改变了,你将如何做点对点的数据传输?

Solutions Collecting From Web of "点对点通信选项"

你看了Qualcomm的AllJoyn图书馆吗? 它的目的是通过蓝牙或WiFi工作,所以可能适合,但如果你连接3G或更广泛的networking,它将无法正常工作。

考虑到两个不在同一networking中的远程设备之间的networking的差异性和可靠性,我会质疑对等networking是否是最好的解决scheme,并且会冒险build议考虑在两者之间使用应用服务器,以便您可以使用云到设备消息传递 [已弃用](可能与Google App Engine一起使用)。 即发送一个消息发送者将其传递给服务器,然后服务器将其传递给接收者。

从理论上说,networking上的所有设备都有一个唯一的IP地址,可以互相通话,但是路由器/防火墙configuration不同,所以很less这么简单,所以您需要非常注意所使用的端口,特别是考虑到很多入站出于安全原因,端口被默认阻止。

您可以简单地使用UDP / TCP套接字。 在一个单独的线程中,您设置了服务器端侦听器套接字,就是这样。 当然你的应用程序必须先启动(或者应该始终在后台运行)。 这是一个例子:

http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

如果你还需要对等发现,会使事情变得更加困难。

你也应该看看peerdroid, 这里有一个开源项目。 从收集联邦设备的angular度来看,我一直在寻找对等通信选项(如果您喜欢,可以预先配对,类似于蓝牙配对)。 这个库看起来可能会给你打算做什么的基础。

如果您在自己的networking上(例如家庭或办公室的WiFi),那么您应该能够查询其他连接的设备。 如果您所在的networking不在您的控制之下(移动networking或公共无线networking),则networking将被configuration为将每个设备与其他设备隔离。 在这种情况下,你将别无select,只能把服务器当作中间人。 这带来了自己的架构妥协 – 每个设备都必须定期轮询服务器或保持连接打开 – 除非您使用Google App Engine支持通过Google自己的基础架构推送通知。

感谢您的答案ldx,但我需要对等发现,如你所示。 一些进一步的研究似乎表明XMPP是一种合适的技术,现在有一些提供的服务,尽pipe这些服务似乎是针对“服务器”到客户端的通知。 这里有一个关于XMPP和这里更多的讨论,虽然看起来还有一些问题需要处理,比如轮询v推送,长时间运行的开放http连接和电池寿命。 Xtify看起来很有前途,尤其是他们的networking服务 我希望这给那些看对等数据通信的人提供了合适的信息。

尝试PushSharp 。 用于向iOS(iPhone / iPad APNS),Android(C2DM和GCM – Google Cloud Message),Windows Phone和Windows 8设备发送推送通知的服务器库。