Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GCM与android中的Socket_Java_Android_Sockets_Google Cloud Messaging - Fatal编程技术网

Java GCM与android中的Socket

Java GCM与android中的Socket,java,android,sockets,google-cloud-messaging,Java,Android,Sockets,Google Cloud Messaging,据我所知,大多数android教程和示例都依赖于使用GCM将数据从服务器发送到android设备;并使用php脚本和post/get方法将数据从设备发送到服务器 我的一个朋友(一个对android编程一无所知的人)简单地问我,为什么我们不能在java中使用Socket类?在传统的java编程中,您使用套接字(IP地址+端口号)来实现类似于GCM(单服务器多客户端-使用适当的技术可以确保消息不会丢失,就像GCM一样)的功能 这种传统的套接字方法也可以在android中实现吗?如果是的话,GCM和插

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

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

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


附言:我只是一名高中生;如果我在某个地方把概念弄错了,我深表歉意。

GCM也使用套接字。但是,它们是由系统管理的,因此可以完成常规应用程序无法完成的事情。通常,对于任何类型的“推送”通知,系统都需要有一个长寿命的套接字,“通知”只是在该套接字上接收的一些数据。所有这些都不难在始终连接的机器上实现,例如桌面或服务器,但在移动设备上还有其他挑战。例如,交换网络(3GWiFi),超出范围,在不让设备一直处于唤醒状态的情况下保持连接(并在此过程中耗尽电池)。所以,是的,您可以使用服务、套接字和您自己的服务器实现类似的功能,但在移动设备上这并不是一件小事


查看一个开源实现

谢谢:)所以基本上是可能的;但就像现在没有人硬编码整个网站一样,在现实世界中,你总是使用GCM而不是套接字。Whatsapp、Gmail、facebook等都使用GCM,对吗?如果你不想依赖谷歌服务或在没有谷歌账户的设备上运行,你需要自己实现它。Gmail确实使用GCM,但不知道其他的。