Android中的GCM与Socket

时间:2013-10-02 04:16:46

标签: java android sockets google-cloud-messaging

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

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

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

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

1 个答案:

答案 0 :(得分:22)

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

查看http://mqtt.org/以了解开源实施。