课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
大家在访问网页的时候是不是会有一个网站正在加载中的提示,这其中就涉及到了数据缓冲技术,而今天我们就通过案例分析来了解一下,数据缓冲都有哪些常用方法。
事实上,基于Socket开发的TCP网络应用有两种缓冲区:
一种是由应用程序设置的数据缓冲区,可称之为“应用程序TCP/IP数据缓冲区”,多使用字节数组,我们在本篇文章中涉及到的都是这种类型的缓冲区。
另一种则是由操作系统为TCP/IP所提供的专用数据缓冲区,可称之为“TCP/IP系统缓冲区”。
以阻塞方式调用Socket的Send方法,它只是保证这些数据已经被成功地送到了操作系统为TCP/IP设置的缓冲区中,但是否马上就被操作系统送到网络上,并且马上对方就能收到这些数据,还是个未知数。
默认情况下,操作系统为TCP所提供的数据缓冲区大小为8K。我们可以通过Socket对象的以下属性对其进行调整。
publicintReceiveBufferSize{get;set;}
publicintSendBufferSize{get;set;}
系统缓冲区的大小会影响到网络应用程序的性能。比如如果需要在两台计算机间传送一个较大的文件,那么,较大的缓冲区(比如8K)就比较小的缓冲区(比如1K)数据传送效率高。
总而言之,TCP协议在本质上仅仅保证“要发送的所有数据都按顺序地提交给接收者”,但它不维持要发送消息的边界,完全可能出现发送方连接调用多次Send方法,而接收方只调用一次Receive就全部接收完的情形。再加上网络可能拥塞,发送端与接收端处理数据的速度不同,……,情况就更复杂了。
因此,我们必须仔细地考虑各种情况,采取相应的策略来应对,通常采用的方式有以下3种:
(1)只传播固定大小的消息。
(2)在消息开头附上一个消息的尺寸信息。
(3)采用一问一答的方式
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。