ACE 的异步读写问题。
我用ACE前摄器中的异步读写操作,写了一个传文件的程序,没有分片,为什么50M左右的文件可以传过去,70M左右就停掉了。ACE的异步读写内部有没有循环机制呢,还是要自己控制大小,自己写循环操作? 我的理解:
1、如果你没有分片,直接传的话,OS是用系统内部的缓冲区来进行读写操作的,这要看系统自身的设置了。缓冲区投递太多,用尽就停止了。
2、分片是必然的,推荐采用和内存分页值一致的分片缓冲区。自己循环操作进行处理,其实很简单的。只要计算好文件尺寸,控制结束就可以了。 网络有MTU限制的,
底层缓冲区哪有那么大? 注意partial write,
要自己写循环发送剩下的数据的 参照Reactor内Proactor关于文件传输的Demo,使用ACE_Asynch_Transmit_File,我试过大于200M的文件传输没问题。无须循环控制文件的发送。
页:
[1]