提供给TCP Client作小包组大包用的发送缓冲区

3 views
Skip to first unread message

candid Qiu

unread,
Mar 1, 2006, 4:44:33 AM3/1/06
to ACE...@googlegroups.com
1、特性:
1)超时立即发送
2)多个缓冲区,减少读和写的冲突
3)接口简单,只用5个接口

2、总结:
通过测试,得出结论为:小包组大包能提高性能,但是需要分清情况。
如果数据的发送是ping-pang形式的,则最好不要用组包的方式,因为每次都可能超时,而超时现在能设计的最小Sleep(),window上就100ms,unix上50ms(对么?)

3、使用情况:
如果在处理一个包的时候,需要多次发送数据,而数据量又比较小,则最好使用组包。注意,应该测试分析数据的大小后才决定设置最小发送数据的长度。


源程序中我没有提供timer的代码,需要可以自己实现一下。

请提建议和bug!

ClientContainer.rar

时代过客

unread,
Mar 1, 2006, 8:40:00 PM3/1/06
to 基于ACE和SpiderMonkey的SMS虚拟运营系统
需要多次发送数据,而数据量又比较小,则最好使用组包=============================
TCP传输默认就开启NAGLE算法,这个算法就是实现上述功能

而超时现在能设计的最小Sleep(),window上就100ms­,unix上50ms(对么?)

===================================
WINDOWS上是15MS,其他平台我就不熟悉了.在WINDOWS如果要达到1MS并且要很准确就使用多媒体计时器吧,我就封装了这样的计时器来计算TCP空连接超时的,因为我的程序是与多媒体有关,因此这样的计时器对我来说也实用

candid Qiu

unread,
Mar 1, 2006, 8:48:08 PM3/1/06
to ACE...@googlegroups.com
TCP本身提供该功能,但是还像没有办法设置包的大小,如果需要设置则可以用自己的发送缓冲区,同时可以将发送和业务处理分离到不同的线程中,利于提供业务处理的效率。

asdf asdf

unread,
Mar 6, 2006, 8:31:00 AM3/6/06
to ACE...@googlegroups.com


>From: "candid Qiu" <can...@gmail.com>
>Reply-To: ACE...@googlegroups.com
>To: ACE...@googlegroups.com
>Subject: 提供给TCP Client作小包组大包用的发送缓冲区
>Date: Wed, 1 Mar 2006 17:44:33 +0800


><< ClientContainer.rar >>

_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn

Reply all
Reply to author
Forward
0 new messages