1.是不是可以用在客户端,比如一个客户端要到很多服务器请求数据.2.是不是接收到数据才会把完成事件放到队列中,发送完毕不会把事件放到队列中

解决方案 »

  1.   

    1. 完成端口只是提供了一种异步IO的机制,可以被用在任何需要异步IO的地方,自然也包括客户端
    2. 只要你发送时用的也是异步方式,并且关联到完成端口,那么就应该有消息包到队列的
      

  2.   

    1。可以。不过在客户端很少使用IOCP,因为大多数客户端都要求运行在最多操作系统上,如果使用IOCP,那么WIN9X就不能用。
    2。只要有IO事件,都会通知。
      

  3.   

    1.是不是可以用在客户端,比如一个客户端要到很多服务器请求数据.
    完成端口大多用在服务器上,因为只有服务器会处理大量的连接(例如:几千个以上的连接)
    而客户端的连接数通常较少没有必要用完成端口这么复杂的模型,可以减少工作量。一般几百个连接用SELECT等等模型都可以轻松搞定。2.是不是接收到数据才会把完成事件放到队列中,发送完毕不会把事件放到队列中
    完成端口接收数据过程:将接收数据的命令投递到完成端口上,如果有数据过来,完成端口会将这个消息保存到队列中,必须自己用GetQueuedCompletionStatus去读取。