直接在两个移动设备之间进行通信

时间:2013-08-25 19:51:01

标签: android mobile nat hole-punching

我最感兴趣的是移动设备的一般答案,但特定于Android的东西是可以接受的。

鉴于2个移动设备,我如何在它们之间建立连接。我是移动开发的新手,我不确定是什么类型的NAT移动设备。是否可以进行某种“打孔”(使用外部服务器来帮助建立连接)将它们连接在一起?

我看过这个问题,但它对我没有多大帮助,我仍然不知道如何获取IP和/或遍历NAT。 Android - communicating between two devices

3 个答案:

答案 0 :(得分:5)

如果您想使用通用无线模块,如GSM,UMTS,LTE,则需要提供具有所需协议实现的独立硬件。对于GSM,您可以查看OpenBTS http://openbts.org/,它是免费软件。

作为其他通信方式,您可以使用Wi-Fi点对点http://developer.android.com/guide/topics/connectivity/wifip2p.html建立无线连接。

通信能力基于芯片的规格,并非所有Wi-Fi都支持这种连接。另一方面,您还可以建立蓝牙连接。

答案 1 :(得分:2)

http://developer.android.com/training/connect-devices-wirelessly/index.html 参考这个......

您也可以使用蓝牙API或使用套接字编程在应用程序中通信两个设备。

答案 2 :(得分:1)

我希望他们两个都连接到互联网上的服务器 - 也许是一个Web服务器 - 也许你可以从Amazon EC2实例开始。电话使用HTTP请求向服务器发送消息,服务器使用某些描述的HTTP Push向其他电话发送消息。 Skype和它的同类使用了一种名为UDP hole punching的技术来进行点对点通信(尽管通过中央服务器进行调解),尽管我认为他们必须因合法拦截而停止(咳嗽NSA )要求。