博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP收包小结
阅读量:4198 次
发布时间:2019-05-26

本文共 414 字,大约阅读时间需要 1 分钟。

先说说TCP收包的context(不定长包)。一般情况,发送方发送一个包,然后接收方收到一个包,这是最好处理的。第二种情况,当每次发生的包比较小时,发送数据时,TCP会启用优化算法,将多个小包集中起来发送,以提高传输效率。此时接收方的recv buffer中,可能出现不止一个包。第三种情况,recv buffer中每次只一个包,但接收方没及时取包,这时recv buffer中会积累多个包。

理所当然,TCP收包要考虑所有这些情况。一般来说有三种方法。第一种,定义好通讯协议,先收包头,然后根据包头中的消息真实大小,接收消息剩余部分。第二种方法,通讯协议规定好每个消息的开始和结束标识符。然后每次recv得到的数据先放到一个大(比如你的最大packet的2倍)buffer中,最后再来分析这个buffer分包。第三种方法,先用recv+MSG_PEEK接收某个固定长度,然后对接收到的"包"进行分析,然后做真正的recv操作。

转载地址:http://xouli.baihongyu.com/

你可能感兴趣的文章
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>
高扩展性网站的50条原则(转)-思维导图
查看>>
解决openstack novnc一段时间后自动挂断登录不上问题,novncproxy dead but pid file exists
查看>>
构建OpenStack的云基础架构:ManageIQ(转)
查看>>
云管理软件 ManageIQ(转)
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
DISCUZ浅析之COOKIE篇
查看>>
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
查看>>
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>