2009-09-18 11:10什么是长连接,什么是短连接?

贴个经典的,看完了就应该没啥问题了 : TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程 序,据此一些人可能会认为TCP/IP编程很简单。其实不然, TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在 通信方式和报文格式的多样性上。 一。通信方式 主要有以下三大类: (一)SERVER/CLIENT方式 1.一个Client方连接一个Server方,或称点对点(peer to peer): 2.多个Client方连接一个Server方,这也是通常的并发服务器方式。 3.一个Client方连接多个Server方,这种方式很少见,主要 用于一个客户向多个服务器发送请求情况。 (二)连接方式 1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。这种方式下由于通讯连接一直 存在,可以用下面命令查看连接是否建立: netstat –f inet|grep 端口号(如5678)。 此种方式常用于点对点通讯。 2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连 接,交易完毕后立即断开连接。此种方式常用于一点对多点 通讯,比如多个Client连接一个Server. (三)发送接收方式 1.异步 报文发送和接收是分开的,相互独立的,互不影响。这种方 式又分两种情况: (1)异步双工:接收和发送在同一个程序中,有两个不同的 子进程分别负责发送和接收 (2)异步单工:接收和发送是用两个不同的程序来完成。 2.同步 报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发上去后不能无限等 待,需要设定超时时间,超过该时间发送方不再等待读返回报 文,直接通知超时返回。 实际通信方式是这三类通信方式的组合。比如一般书上提供的 TCP/IP范例程序大都是同步短连接的SERVER/CLIENT程序。有的 组合是基本不用的,比较常用的有价值的组合是以下几种: 同步短连接Server/Client 同步长连接Server/Client 异步短连接Server/Client 异步长连接双工Server/Client 异步长连接单工Server/Client 其中异步长连接双工是最为复杂的一种通信方式,有时候经 常会出现在不同银行或不同城市之间的两套系统之间的通信。 比如金卡工程。由于这几种通信方式比较固定,所以可以预 先编制这几种通信方式的模板程序。 二.报文格式 通信报文格式多样性更多,相应地就必须设计对应的读写报文的接 收和发送报文函数。 (一)阻塞与非阻塞方式  1.非阻塞方式 读函数不停地进行读动作,如果没有报文接收到,等待一段时间后 超时返回,这种情况一般需要指定超时时间。 2.阻塞方式 如果没有报文接收到,则读函数一直处于等待状态,直到有报文到达。 (二)循环读写方式 1.一次直接读写报文 在一次接收或发送报文动作中一次性不加分别地全部读取或全部 发送报文字节。 2.不指定长度循环读写 这一般发生在短连接进程中,受网络路由等限制,一次较长的报 文可能在网络传输过程中被分解成了好几个包。一次读取可能不 能全部读完一次报文,这就需要循环读报文,直到读完为止。 3.带长度报文头循环读写 这种情况一般是在长连接进程中,由于在长连接中没有条件能够 判断循环读写什么时候结束,所以必须要加长度报文头。读函数 先是读取报文头的长度,再根据这个长度去读报文.实际情况中, 报头的码制格式还经常不一样,如果是非ASCII码的报文头,还必须 转换成ASCII,常见的报文头码制有: (1)n个字节的ASCII码 (2)n个字节的BCD码 (3)n个字节的网络整型码 以上是几种比较典型的读写报文方式,可以与通信方式模板一起 预先提供一些典型的API读写函数。当然在实际问题中,可能还 必须编写与对方报文格式配套的读写API. 在实际情况中,往往需要把我们自己的系统与别人的系统进行连接, 有了以上模板与API,可以说连接任何方式的通信程序都不存在问题。

http://hi.baidu.com/dqzone/blog/item/729f0f99b40d48bfc9eaf48a.html

什么是长连接,什么是短连接相关推荐

  1. HTTP的长连接(持久连接)和短连接

    HTTP的长连接和短连接     本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规 ...

  2. php微信短网址生成,如何把微信文章网址长连接(长网址)转换为短连接(短网址)...

    为什么要把长连接转为短连接? 1.专业一点:长连接不利于网站的SEO,链接越长权重越低: 2.通俗一点:链接越长越不利于网络传播,不利于推广,更严重的是有些网站会把长网址屏蔽掉. 3.另外有些平台的内 ...

  3. 【Java】接口长URL转成短连接的实现(代码案例实操)

    有时候,我们不想采用很长的url链接,主要的一些原因: URL太长占显示空间.难于输入,转成二维码点点小,难于识别 长的URL提供的信息太多,不利于信息安全,甚至容易造成倒库 其他理由......例如 ...

  4. 跨进程通信,到底用长连接还是短连接

    一个完整的软件系统大多数情况下是由多个进程共同协作进行的,哪怕它们在同一台服务器上.所以,进程之间如何进行高效的通信至关重要. 单个应用程序+单个数据库这套基础开发套餐我相信每个人都经历过,甚至在初期 ...

  5. PHP tcp短链接,http请求怎样实现TCP长连接、短连接

    HTTP连接分为长连接和短连接,而我们现在常用的都是HTTP1.1,因此我们用的都是长连接. 这句话其实只对了一半,我们现如今的HTTP协议,大部分都是1.1的,因此我们平时用的基本上都是长连接.但是 ...

  6. jmeter 最大时间长_长连接和短连接区别和优缺点

    TCP与UDP udp:面向无连接的通信协议,数据包括目的端口信息和源端口信息优点:面向无连接,操作简单,要求系统资源较少,速度快,由于不需要连接,可进行广播发送缺点:发送数据之前不需要与对方建立连接 ...

  7. 事务连接中断_HTTP长连接和短连接

    短连接 客户端和服务器每进行一次HTTP事务操作,就建立一次连接,任务结束就中断连接.http1.0协议默认使用短连接 长连接 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访 ...

  8. MySQL之长连接、短连接、连接池(转载:http://www.ywnds.com/?p=9801)

    当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信.客户端必须使用数据库连接来发送命令和接收应答.数据.通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了. ...

  9. mysql长连接与短连接

    什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-> ...

  10. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

最新文章

  1. Java将mysql输出csv,如何从Java中的Access数据库导出表并将其保存到.csv
  2. php首尾空格,php去除头尾空格的2种方法_PHP教程
  3. linux内核杂记(6)-进程调度(1)
  4. linux网络编程、socket编程
  5. kafka streams_Kafka REST Proxy for MapR Streams入门
  6. 数学结果告诉你足球的赛程安排并不能做到完全公平
  7. 如何删除多余系统引导项
  8. 亚马逊与Visa就交易费达成协议 重新接受Visa支付
  9. 一步步实现SDDC-双节点VSAN部署
  10. java面相对象的关键字_Java面向对象关键字有哪些?
  11. 为什么好多公司的开发语言从C#变成了JAVA
  12. 记一次mongdb搭建复制集的小故障
  13. jQuery UI 实现 仿购物车功能 简洁的js
  14. Mac安装IDA后各版本android_server
  15. html5 datepicker ios,iOS DatePicker日期时间选择器【组件】
  16. 武汉大学953计算机综合真题,武大电力系统分析实验报告.docx
  17. 为贝尔吉比特电信G-120W-B光猫添加自动重启功能
  18. 压垮硬盘的最后一次备份
  19. laravel文档链接
  20. 表扩展字段2种实施方案研究

热门文章

  1. RH442-5 ext3文件系统调优
  2. C、 C++遍历文件夹,删除文件夹
  3. 北大前沿交叉学院数据科学计算机,北京大学数据科学(统计学)考研经验-北大前沿交叉学科研究院考研...
  4. 性能调优篇:困扰我半年之久的RocketMQ timeout exception 终于破解了
  5. 计算机语言学 pdf,语言学必读书目PDF版.doc
  6. 手把手教你使用Python网络爬虫获取音效信息
  7. 校园商战大赛备战攻略
  8. 微信扫码登录超详细教程
  9. Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)
  10. bootstrap 清楚浮动