完成端口怎么老有序地改变io_operation啊,比如说一个线程来说,我要让它收到完成动作为read完成,write完成,write完成,write完成,read完成,怎么来操作啊?
如果是写法如下:
if(io_operation==read)
{
      io_operation=write;
      wsasend();          //收到写完成操作
      wsasend();          //收到写完成操作
      wsasend();          //收到写完成操作
}
if(io_operation==write)
{
     io_operation=read;
     wsarecv();
}我先从client发个包过来,收到读完成, 然后我要向client端写三个包.(假如我定义的缓冲区大小有限,数据大要要分包,因此要多发)然后再从client端读数据.为什么这样写会乱套啊?应该怎么来写呢?

解决方案 »

  1.   

    当然上面说的是对同一个client,而且上面的代码在一个线程里的!
      

  2.   

    这个问题搜索下这个论坛。有很多类似的帖子的。做IOCP不要一个人闷着头做。要多参考大家的想法还有他们成熟的经验。
      

  3.   

    三个send,具体发送时候它的时间可不是和你写的一样啊,所以最好是在一个send返回后,再发下一次的内容,不然就是加大缓冲(当然你说了缓冲有限制)一次发送了。