[求助]Practor模式ACE_Asynch_Write_Stream的write问题
求助论坛诸位:Practor模式的ACE_Asynch_Write_Stream的write函数,有没有可能因为TCPbuffer满而返回失败-1,如果会的话怎么得到失败理由,google了许久都没有答案,谢谢诸位。 getlasterror ACE_Asynch_Write_Stream的Write的时候,实际并不是写入发送堆栈,只是把你的数据放入一个队列,在这个队列,异步程序会有一个线程负责帮你发送数据。填充数据如果过多会引起BLOCK,会在handle_write_stream()事件中返回数错误类型。 谢谢版主 那再进一步问一下,如果满了是EAGAIN错误吗 你报的错误ID是什么?贴出来。 谢谢freeeyes版主,没有错误ID,我只是请教这个流程,如果会buff满而发送失败那就需要重新发送,目前没有做测试,也不知道怎么才能将buffer填满。
至于您说的handle_write_stream返回错误请问怎么获取,有没有相关的资料可以参考呢,非常感谢 异步写缓存满的时候,你再写的时候会返回
WSAENOBUFS if (this->writer_.write (mb, mb.length ()) == -1)
{
mb.release ();
ACE_ERROR_RETURN ((LM_ERROR,
"%p\n",
"ACE_Asynch_Write_Stream::write error "),
-1);
}比如上面,你日志会打印“no buffer space available”。 感谢楼上wuyudry指点
页:
[1]