http长链接和短链接

http长链接和短链接

1 http长连接与短连接

1.1 长连接和短连接

1.1.1 长连接

client与server先建立建立连接以后不断开,然后进行通信(也就是发送报 文)。这种方式由于连接一直存在,所以被称为长连接。经常用于P2P通信。

1.1.2 短连接

Client与server每进行一次通信(报文)才发起连接,交易完毕后 立即断开连接。此方式常用于一点对多点通讯。C/S通信用得比较多。

1.2 长连接与短连接的操作过程

1.2.1 长连接的操作步骤是

建立连接——数据传输…(保持连接)…数据传输——关闭连接

1.2.2 短连接的操作步骤是

建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接

1.3 长连接与短连接的使用时机

1.3.1 长连接

短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个 TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次 操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作 时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长 连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是 对资源的浪费。

1.3.2 短连接

web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定 的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省 一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都 占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每 个用户又不需频繁操作的情况下需要短连接。

总之:长连接和短连接的选择要视需求而定。

1.4 发送接收方式

1.4.1 同步

报文发送和接收是分开的,相互独立,互不影响的。这种方式又分两种情况:

  1. 异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发 送和接送。
  2. 异步单工:接送和发送使用两个不同的程序来完成。
1.4.2 异步

报文发送和接收是同步进行,即报文发送后等待接送返回报文。同步方式一 般需要考虑超时问题,试想我们发送报文以后也不能无限等待啊,所以我们 要设定一个等待时候。超过等待时间发送方不再等待读返回报文。直接通知 超时返回。

1.5 报文

通信报文格式多样性更多,相应地就必须设计对应的读写报文的接收和发送 报文的函数。

1.5.1 阻塞与非阻塞方式
  1. 非阻塞方式:读函数不停的进行读动作,如果没有报文接收到,等待一段 时间后超时返回,这种情况一般需要指定超时时间。
  2. 阻塞方式:如果没有接收到报文,则读函数一直处于等待状态,知道报文 到达。
1.5.2 循环读写方式
  1. 一次直接读写报文:在一次接收或发送报文动作中一次性不加分别地全部 读取或全部发送报文字节
  2. 不指定长度循环读写:这一版发生在短连接进程中,受网络路由等限制, 一次较长的报文可能在网络传输过程中被分解成很多个包,一次读取可能 不能全部读完一次报文,这就需要循环读取报文,知道读完为止。
  3. 带长度报文头循环读写:这种情况一般在长连接中,由于在长连接中没有 条件能够判断循环读写什么时候结束。必须要加长度报文头。读函数先是 读取报文头的长度,再根据这个长度去读报文,实际情况中,报头码制格 式还经常不一样,

    如果是非ASCII的报文头,还必须转换成ASCII常见的报文头编制有:

    1. n个字节的ASCII码。
    2. n个字节的BCD码。
    3. n个字节的网络整型码。

以上是几种比较典型的读写报文方式,可以与通信方式模板一起 预先提供 一些典型的API读写函数。当然在实际问题中,可能还必须编写与对方报文 格式配套的读写API. 在实际情况中,往往需要把我们自己的系统与别人的 系统进行连接, 有了以上模板与API,可以说连接任何方式的通信程序都不 存在问题。

Date: 2012-05-24T20:56+0800

Author: Luo.ZhiHui

Org version 7.8.09 with Emacs version 23

Validate XHTML 1.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值