kangyunqiang 发表于 2008-5-6 10:52:41

ACE 的异步读写问题。

我用ACE前摄器中的异步读写操作,写了一个传文件的程序,没有分片,为什么50M左右的文件可以传过去,70M左右就停掉了。
ACE的异步读写内部有没有循环机制呢,还是要自己控制大小,自己写循环操作?

winston 发表于 2008-5-6 11:06:06

我的理解:
1、如果你没有分片,直接传的话,OS是用系统内部的缓冲区来进行读写操作的,这要看系统自身的设置了。缓冲区投递太多,用尽就停止了。
2、分片是必然的,推荐采用和内存分页值一致的分片缓冲区。自己循环操作进行处理,其实很简单的。只要计算好文件尺寸,控制结束就可以了。

pizx 发表于 2008-5-11 22:21:10

网络有MTU限制的,
底层缓冲区哪有那么大?

pizx 发表于 2008-5-11 22:24:07

注意partial write,
要自己写循环发送剩下的数据的

okibun0129 发表于 2008-5-16 11:16:00

参照Reactor内Proactor关于文件传输的Demo,使用ACE_Asynch_Transmit_File,我试过大于200M的文件传输没问题。无须循环控制文件的发送。
页: [1]
查看完整版本: ACE 的异步读写问题。