- 浏览: 243180 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (192)
- 技术研究学习 (19)
- 工作总结 (4)
- spring3.x (11)
- mail (2)
- jar (2)
- FCKeditor (1)
- quartz (2)
- json (1)
- jdbc (5)
- struts2 (6)
- java基础 (18)
- jboss (3)
- IT名称解析 (1)
- 测试工具 (2)
- 工作趣谈 (1)
- 数据库 (8)
- js (8)
- jquery (1)
- mysql (20)
- Sql (3)
- Oracle (1)
- easyui (0)
- log4j (1)
- 源码研究 (1)
- Jasper Report (0)
- Jbpm4 (4)
- xml (1)
- ireport (0)
- javavm (1)
- sitemesh (5)
- compass (1)
- jvm (1)
- ext (1)
- lucene (0)
- cxf (1)
- Blazeds (0)
- Resteasy (1)
- jaxb (1)
- tomcat (1)
- Rmi (1)
- BoneCP (1)
- velocity (3)
- OSCache (1)
- EHCache (1)
- 高性能开发 (9)
- 设计模式 (0)
- 网络协议应用 (1)
- Ibatis (1)
- powerdesigner (1)
- 架构师之路 (2)
- memcached (4)
- MapReduce (1)
- 测试组 (1)
- 图像处理 (2)
- LoadRunner (2)
- 报表 (1)
- 负载均衡 (1)
- 分布式 (3)
- c# (1)
- java中一些特殊问题 (3)
- java 8 (1)
- Mogodb (1)
- 项目设计与实现 (2)
- Ubuntu (1)
- eclipse (1)
- gradle (1)
- 私有云 (1)
- redis (1)
- 移动前端 (1)
最新评论
来源:http://www.cnblogs.com/yezhenhan/archive/2012/01/09/2316914.html
一、长连接与短连接: 长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S通信。二、长连接与短连接的操作过程: 短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接三、长连接与短连接的使用时机: 长连接:短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。短连接:web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。总之:长连接和短连接的选择要视需求而定。四、发送接收方式: 1、异步:报文发送和接收是分开的,相互独立,互不影响的。这种方式又分两种情况:异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接送。异步单工:接送和发送使用两个不同的程序来完成。2、同步:报文发送和接收是同步进行,即报文发送后等待接送返回报文。同步方式一般需要考虑超时问题,试想我们发送报文以后也不能无限等待啊,所以我们要设定一个等待时候。超过等待时间发送方不再等待读返回报文。直接通知超时返回。五、报文格式: 通信报文格式多样性更多,相应地就必须设计对应的读写报文的接 收和发送报文函数。阻塞与非阻塞方式 1、非阻塞方式:读函数不停的进行读动作,如果没有报文接收到,等待一段时间后超时返回,这种情况一般需要指定超时时间。2、阻塞方式:如果没有接收到报文,则读函数一直处于等待状态,知道报文到达。循环读写方式 1、一次直接读写报文:在一次接收或发送报文动作中一次性不加分别地全部读取或全部发送报文字节。2、不指定长度循环读写:这一版发生在短连接进程中,受网络路由等限制,一次较长的报文可能在网络传输过程中被分解成很多个包,一次读取可能不能全部读完一次报文,这就需要循环读取报文,知道读完为止。3、带长度报文头循环读写:这种情况一般在长连接中,由于在长连接中没有条件能够判断循环读写什么时候结束。必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读报文,实际情况中,报头码制格式还经常不一样,如果是非ASCII的报文头,还必须转换成ASCII常见的报文头编制有:1、n个字节的ASCII码。2、n个字节的BCD码。3、n个字节的网络整型码。以上是几种比较典型的读写报文方式,可以与通信方式模板一起 预先提供一些典型的API读写函数。 当然在实际问题中,可能还必须编写与对方报文格式配套的读写API. 在实际情况中,往往需要 把我们自己的系统与别人的系统进行连接, 有了以上模板与API,可以说连接任何方式的通信程序 都不存在问题。
发表评论
-
java集合查询测试结果
2013-06-08 09:41 1113package test.com; import j ... -
对象池修订版
2013-03-08 14:09 0public class ObjectPool { ... -
深入研究java.lang.Process类
2013-03-07 12:07 831一、概述 Process ... -
深入研究java.lang.Runtime类
2013-03-07 11:54 922一、概述 Runtime ... -
JAVA图像缩放处理
2012-11-09 16:33 884import java.awt.image.Buffere ... -
oa
2012-10-19 18:03 0http://code.google.com/p/joffic ... -
Frameset导致Cookies和Session丢失的原因及解决办法
2012-09-29 11:27 74341.Frameset导致Cookies和Session丢失 ... -
java synchronized详解
2012-09-29 11:28 789来源:http://www.cnblogs.com/GnagW ... -
java实时监测文件夹的变化,允许多用户同时访问,完成文件转移
2012-10-04 09:26 1143来源:http://www.189works.com/arti ... -
jndi调用时,各种应用服务器InitialContext的写法
2012-09-27 11:12 903调用ejb时,如果客户端和ejb不在同一个jvm,就要 ... -
jvm字节码执行引擎
2012-08-16 12:25 1032一. 运行时栈帧结构 1. 栈帧是用于支持虚拟机进行方法调用 ... -
ClassWorking技术
2012-08-16 12:25 1335ClassWorking技术 IBM所提出的,动态地监测、修 ... -
动态加载class文件
2012-08-16 12:26 8181.参考老外: public class ClassPat ... -
quartz-scheduler的集群化配置
2012-08-13 09:33 1639由于集群只能工作在JDBC-Jobstore(JobStore ... -
dbcp连接池实现
2012-08-09 13:10 1600dbcp连接池实现commons DBCP 配置参数简要说明 ... -
常用jar包之commons-beanutils使用
2012-08-20 14:07 1409核心提示:Jakarta Commons 项目提供了相当丰富的 ... -
aop详解
2012-08-09 13:09 1290使用Spring进行面向切面 ... -
Dwr2+Struts2+Spring2.5+Hibernate3整合
2012-08-08 12:33 9291.//如果不用,启动时不会出错,但使用Dwr时,会抛出异常: ... -
AOP面向编程的使用场合
2012-08-07 20:45 945AOP(Aspect-Oriented Programming ... -
23种设计模式详解
2012-08-08 13:41 1331Java中23种设计模式 目录 1. 设计模式 3 1. ...
相关推荐
TCP长连接与短连接示意图
Java实现Socket长连接和短连接,实现原理可参见个人博客
6.2 短连接 通信双方以客户-服务器方式建立TCP连接,应答与请求在同一个连接中完成。系统采用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。 网关与SP之间、网关之间的消息发送后...
MINA入门实例,实现长连接,短连接通讯。
长连接短连接介绍 1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。 2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种...
Mina长连接短连接实例包含Minaclient工程和MinaHost工程,另外还有几个文档,相信对理解这两个工程有很大的帮助
基于Apache Mina实现的TCP长连接和短连接实例.doc
是一个socket长连接和短连接框架其中包括多线程,线程池的创立,由于jar包太大所以没拷上来,可以作为学习应用.
服务器与客户端交互的连接类型的一种分类和说明以及比较。
Socket通讯,长连接短链接,包分 包头、指令、内容 包头一般2-4个字节 表示包的长度,指令2个字节 表示做什么操作,内容是具体数据
主要介绍了HTTP长连接与短连接使用方法及测试,需要的朋友可以参考下
TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程 序,据此一些人可能会认为TCP/IP编程很简单。其实不然, TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信...
线程、线程池、TCP协议长连接短连接的基本入门知识 适合入门
NULL 博文链接:https://bert82503.iteye.com/blog/2147899
android 中长连接变短链接的几种方式集合,希望对大家有所帮助。。。
首先研究下长连接和短连接的性能区别。curl内部是通过socket去连接通讯。socket每次连接最为耗时,如果能够复用连接,长时间连接,减少每次socket连接的时间,则可以大大减少时间,提高效率。 (2) 多线程。单个...
基于ASIO封装的网络库,支持TCP/UDP,支持长连接、短连接,支持组播、单播、广播
[260]完整串口通信程序 Vc++源代码 TCPIP协议 UDP协议 短连接,长连接,定时上位机开发VC串口学习器 等.zip[260]完整串口通信程序 Vc++源代码 TCPIP协议 UDP协议 短连接,长连接,定时上位机开发VC串口学习器 等.zip...
C++ 实现 TCP长,短连接简单Demo,基于VS2017