Java实现Socket长连接和短连接
来源:互联网 发布:苹果6禁止通讯网络 编辑:程序博客网 时间:2024/05/20 23:07
1概念
Socket:socket实际上是对TCP/IP进行的封装,我们可以使用socket套接字通过socket来传输。首先我们需要明白的一个概念就是通道,简单地说通道就是两个对端可以随时传输数据的信道。我么常说的所谓建立socket连接,也就是建立了客户端与服务器端的通道。
长短连接:显而易见,长连接也就是这个socket连接一直保持连接,也就是通道一直保持通畅,两个对端可以随时发送和接收数据;短连接就是我们发送一次或有限的几次,socket通道就被关闭了。首先,我们必须明白的是socket连接后,如果没有任何一方关闭,这个通道是一直保持着的,换句话说,如果任何一方都不关闭连接,这个socket连接就是长连接,因此Java中的socket本身就是支持长连接的(如一个简单的实验:服务器端不关闭连接,服务器端每隔10秒发送一次数据,服务器端每次都能正确接受数据,这个实验就可以证明)。
那么既然socket本身是支持长连接的,那么为什么我们还要提短连接的概念呢?试想一个中国移动的短信网关(即通过发布socket通信接口)每时每分都有N多个连接发送短信请求,加入服务器不加任何限制地直接和客户端使用长连接那么可想而知服务器需要承受多么大的压力。所以一般的socket服务器端都是会设定超时时间的,也就是timeout,如果超过timeout服务器没有接收到任何数据,那么该服务器就会关闭该连接,从而使得服务器资源得到有效地使用。
2 如何实现长短连接
在1中我们已经介绍了长短连接的概念,服务器如果超过timeout时间接收不到客户端的通信就会断开连接,那么假如客户端在timeout时间前一秒(或者更短的时间)发送一条激活数据来使服务器端重新计时,如此重复就能保证服务器一直不能进入timeout时间,从而一直保持连接,这就是长连接的实现原理。下面我们通过一张图说明:
由上图可见,是否是长连接完全取决于客户端是否会在timeout时间发送心跳消息,因此长短连接是和客户端相关的,服务器端没有任何区别(只不过服务器端需要设定timeout而已)。
代码实现可参照:http://download.csdn.net/detail/feichenwangyalin/7951457
- Java实现Socket长连接和短连接
- socket长连接和socket短连接
- java Socket 短连接和长连接的区别
- 什么是socket?什么是socket的长、短连接?java如何简单实现socket客户端和服务器?
- socket 长连接和短连接
- 浅析socket短连接和长连接
- http、socket长连接和短连接
- Socket长连接和短连接
- Socket长连接和短连接
- socket 长连接 短连接
- Socket 长连接、短连接
- Socket 短连接、长连接
- Java socket 长连接与短链接
- socket的长连接和短链接
- 浅谈socket长连接和短链接
- java中的长连接和短连接
- Socket 长连接 短连接 心跳 JAVA SOCKET编程
- Socket 长连接 短连接 心跳 JAVA SOCKET编程
- 11小数据库
- 32位机器和64位机器
- 【操作系统】进程与线程的区别
- Java线程优先级
- 个号才发现保护费个那个发的难道蝙蝠衫把辅导班
- Java实现Socket长连接和短连接
- 似水年华
- 10手柄服务
- Java之OOP基础
- Android Hal层简要分析
- 浅谈ADO.NET中的对象——Connection、Command、DataReader、DataAdapter、DataSet、DataTable
- Android 程序在锁屏下仍然工作的方法
- pthread_join()函数几点
- Goldengate Checkpoint Table Is Corrupted