- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4讲 TCP的流传输控制
网络编程技术第四讲 TCP的流传输控制;Outline;Outline;无边界
传送时机未知
写入、读出、传送形态各异;;从传输方的角度来观察数据
;从传输方的角度来观察数据;从接收方的角度来观察数据
没有数据
接收到已交付的部分数据
接收缓存太小;从接收方的角度来观察数据
接收到已交付的全部数据
部分M1;从接收方的角度来观察数据
接收到已交付的全部数据
M1;从接收方的角度来观察数据
接收到已交付的全部数据
M1+部分M2;从接收方的角度来观察数据
接收到已交付的全部数据
M1+M2;总结TCP的流传送特点
TCP是一个流协议,TCP如何对数据打包跟调用send()函数传递多少数据没有直接的关系。
对于使用TCP的应用程序来说,没有“数据边界”的概念,接收操作返回的时机和数量是不可预测的,必须在应用程序中正确处理。;Outline;;;;;;接收端尚未执行任何recv()之前的一种可能??状态;接收端执行一次recv()
接收端的应用程序缓冲区长度当前接收缓存的数据长度;接收端执行下一次recv()
接收端的应用程序缓冲区长度当前接收缓存的数据长度
;Outline;;数据的接收处理需要考虑到网络中的各种可能性
第一,一次接收不能保证接收到一次发送的所有数据!
循环接收
第二,接收函数的调用结果有很多种!
结果判断
;2014/5/22;预分配的应用程序缓冲区recvbuf的取值难以确定
过小的recvbuf
频繁地调用,消耗资源
过大的recvbuf
浪费系统的存储资源
接收数据的数量不可预测
发送端和接收端都等待数据
死锁!
武断截断消息
错误!;模拟定长数据包的形态处理底层提交的字节流数据
预先给定了接收数据的总长度
增加接收总长度的判断;接收定长数据;用长度字段显式指明字节流的数据长度
设计消息格式存储长度字段
两次定长接收数据;接收定长数据;接收定长数据;接收定长数据
文档评论(0)