封包和拆包.docVIP

  • 10
  • 0
  • 约1.04万字
  • 约 12页
  • 2015-08-23 发布于河南
  • 举报
封包和拆包(转) 对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.自从我从事网络通讯编程工作以来(大概有三年的时间了),我一直在思索和改进封包和拆包的方法.下面就针对这个问题谈谈我的想法,抛砖引玉.若有不对,不妥之处,恳求大家指正.在此先谢过大家了. 一.为什么基于TCP的通讯程序需要进行封包和拆包. TCP是个流协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连成一片的,其间是没有分界线的.但一般通讯程序开发是需要定义一个个相互独立的数据包的,比如用于登陆的数据包,用于注销的数据包.由于TCP流的特性以及网络状况,在进行数据传输时会出现以下几种情况. 假设我们连续调用两次send分别发送两段数据data1和data2,在接收端有以下几种接收情况(当然不止这几种情况,这里只列出了有代表性的情况). A.先接收到data1,然后接收到data2. B.先接收到data1的部分数据,然后接收到data2余下的部分以及data2的全部. C.先接收到了data1的全部数据和data1的部分数据,然后接收到了data2的余下的数据. D.一次性接收到了data1和data2的全部数据. 对于A这种情况正是我们需要的,不再做讨论.对于B,C,D的情况就是大家经常说的粘包,就需要我们把接收到的数据进行拆包,拆成一个个独立的数据包.为了拆包就必须在发送

文档评论(0)

1亿VIP精品文档

相关文档