GCM 与安卓系统中的套接字

据我所知,大多数Android教程和示例都依赖于使用GCM将数据从服务器发送到Android设备;并使用php脚本以及post/get方法将数据从设备发送到服务器。

我的一个朋友(一个对Android编程一无所知的人)只是问我,为什么我们不能在java中使用Socket类?在传统的java编程中,您可以使用套接字(IP地址+端口号)来实现类似于GCM的功能(单个服务器多个客户端 - 使用适当的技术,您可以确保消息不会丢失,就像gcm一样)。

这种传统的套接字方法也可以在Android中实现吗?如果是这样,GCM和Socket的优缺点是什么?在什么情况下使用套接字是合适的?据我所知,Whatsapp和许多其他应用程序都使用GCM。是否有使用套接字的应用?

P.S:我只是一个C.S.的学生。道歉,如果我在某个地方弄错了我的概念


答案 1

GCM也使用套接字。但是,它们由系统管理,因此可以执行常规应用程序无法执行的操作。通常,对于任何类型的“推送”通知,系统都需要有一个长寿命套接字,而“通知”只是在该套接字上收到的一些数据。所有这些都在始终连接的机器(如台式机或服务器)上实现并不难,但在移动设备上还有其他挑战。例如,交换网络(3G<->WiFi),超出范围,保持连接而不使设备始终保持唤醒(并在此过程中杀死电池)。所以,是的,你可以使用服务,套接字和你自己的服务器来实现类似的东西,但这在移动设备上并不是微不足道的。

查看 http://mqtt.org/,了解开源实现。


答案 2

推荐