socket长连接的用处与模块图 待续

维护socket长连接虽然很耗电,但是却有广泛的用途。如:网络电话,实时接单的应用等。

由于服务器域名固定,手机客户端的网络IP可能不断变更,服务器一般想主动找手机客户端想说声不容易。运营商发现手机经常不用网络时(大部分省份判断手机客户端最近30分钟内是否使用流量,来判断你的手机是否在用网络,若有流量就不把你IP分给别人),会把你的手机以前使用的IP分配给其它手机号,所有苹果把苹果手机网络定义为不稳定的网络,禁止发布的应用严重依赖网络的稳定性。所以服务和客户端只有建立可靠的socket长连接,每9分钟发送一次请求才能保持你IP不分配给别人,并且有服务需要向客户端下达订单时,可以通过这个长连接快速推送到手机客户端。要别APNS转了一大圈稳定,延迟小,也解决苹果对短期内推送大量类似信息被苹果服务器拦截的问题。

网络电话的原理也很简单。两个手机开启应用,经过服务器建立SOCKET长连接声音和视频格式流媒体数据流就可以了,当然要打电话是,对方收到网络电话请求消息时,弹出本地通知播放一段音乐就就可以了。网络电话简单吧!是否有开公司的冲动。这也是电话,电报的基本原理,他们都要通过服务器中转,服务器起到早期的电话接线员的角色。

SOCKET模块图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 09:57:52

socket长连接的用处与模块图 待续的相关文章

基于netty框架的socket长连接负载均衡解决方案

socket通讯的单机瓶颈 物联网的项目socket使用方式有两种: 短连接的socket请求 维持socket长连接的请求 对于socket短链接来说就好比是http请求,请求服务器,服务器返回数据以后请求管道就关闭了,服务器与客户端的链接就释放了.但是对于socket长链接就不同了,当设备与服务器建立连接以后就要一直保持连接,或者说保持较长时间的链接,那么就会大量消耗服务器的资源.若存在大量的这样的请求以后服务器终究会受不了垮掉.通过对TcpClient/server最大连接数我们得知单机s

Java实现Socket长连接和短连接

1概念 Socket:socket实际上是对TCP/IP进行的封装,我们可以使用socket套接字通过socket来传输.首先我们需要明白的一个概念就是通道,简单地说通道就是两个对端可以随时传输数据的信道.我么常说的所谓建立socket连接,也就是建立了客户端与服务器端的通道. 长短连接:显而易见,长连接也就是这个socket连接一直保持连接,也就是通道一直保持通畅,两个对端可以随时发送和接收数据:短连接就是我们发送一次或有限的几次,socket通道就被关闭了.首先,我们必须明白的是socket

Socket 长连接 短连接 心跳 JAVA SOCKET编程

简单解释就是: 短连接:建立连接,发送数据包,关闭连接 长连接:建立连接,发送数据包,发送心跳包,发送数据包,发送心跳包,发送心跳包...... 所以又频繁的数据收发的话,短连接会频繁创建TCP连接,而对于长连接,则始终用的是同一个TCP连接 package com.tree.demo.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.n

Socket 长连接与短连接,心跳

长连接与短连接 所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持. 短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接.  比如http的,只是连接.请求.关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接. 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 长连接与短连接的操作过程 通常的

iOS后台如何保持socket长连接和数据传输

工程中使用tcp长连接来和服务端进行数据传输,在IOS平台上,由于苹果的后台机制,会有以下问题: 当程序退到后台的时候,所有线程被挂起,系统会回收所有的socket资源,那么socket连接就会被关闭,因此无法再进行数据的传输: 解决方法: 通过设置以下属性可以保持socket连接和数据的继续传输 1.需要在Info.plist文件中添加UIBackgroundModes中的VOIP键值: 2.设置流属性 CFReadStreamRef和CFWriteStreamRef通过如下方法设置kCFSt

Android网络编程Socket长连接

在实际的应用中客户端可能需要和服务器端保持长时间的通信,即服务器需要不断地读取客户端数据,并向客户端写入数据:客户端也需要不断地读取服务器数据,并向服务器写入数据. 简单实现代码如下: 1 public class MyServer { 2 //定义保存所有Socket的ArrayList 3 public staticArrayList socketList = newArrayList(); 4 5 public static voidmain(String[] args) throws I

Socket,长连接,消息推送,消息提醒,未读消息提醒,消息通知,未读消息通知

今天公司要搞个类似QQ空间的未读消息通知,于是想到用WebSocket长连接,搜索一些资料后,调试好久,还以为不行,结果发现是IIS版本的原因,我本地用的Win7的系统,是IIS6的,本地测试一直不行,后来查资料发现用这个WebSocket要IIS8,我直接放服务器上,测试就OK了,废话不多说,直接上代码.我用的MVC+EF的框架. 1.新建一个Controller,继承APIController [Description("消息")] public class MessageCont

Socket 长连接与短连接

长连接与短连接 Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议.Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口. 所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,即"心跳". 短连接是指通信双方有数据交互时,就建立一个TCP

Java socket 长连接与短链接

 长连接是一旦一个客户端登陆上服务器,其与服务器之间的连接就不关闭,不管他们之间进行了多少次交易,直到客户端退出登陆或网络出现故障. 这种技术在联机交易系统实现有利于提高效率. 短连接是客户端每发一个请求就与服务器建立一个连接,交易完成后关闭连接,这种技术实现较长连接简单. 长:connect连上后不断开,进行多次收发操作. 短:每次都connect,完成任务后立即断开,下次重连. 一般都是accept后启动一个线程去处理,该线程中的处理大致如下 短连接: run(){ read