有几年没编程了,也没来论坛.
最近因为一些事情,还得自己亲自动手.(悲哀)在网络上看了些IOCP的文章,有一些不明白,恳请知者畅言,先谢了有例子在IOCP的工作Thread中,调用GetQueuedCompletionStatus中判断返回值为false并且byteTransfer=0
就判断客户端已经断开.这点我不太理解.如果客户端只是连接,暂时没有数据发送,是不是就会出现上述情况???
最近因为一些事情,还得自己亲自动手.(悲哀)在网络上看了些IOCP的文章,有一些不明白,恳请知者畅言,先谢了有例子在IOCP的工作Thread中,调用GetQueuedCompletionStatus中判断返回值为false并且byteTransfer=0
就判断客户端已经断开.这点我不太理解.如果客户端只是连接,暂时没有数据发送,是不是就会出现上述情况???
byteTransfer=0 并且 per-I/O数据中的nOperationType 为 OP_READ 或 OP_WRITE 这样才表示客户端断开了。
因为对IOCP还没完全理解,暂时放了下来.看了网络上的资料,从IOCP读数据都有比较清楚的交代,
向IOCP写数据,我都没看懂.
不知道是不是可以取得socket,直接向socket写,那就不关IOCP的事,不知可否?
你所提到的per-I/O数据中的nOperationType 为 OP_READ 或 OP_WRITE,不是通用的代码吧?另外想请教:
如果有个客户端连接上IOCP服务器,但是没有收发数据,请问服务器程序会不会阻塞在某个地方?(thread内阻塞也算)
你所提到的per-I/O数据中的nOperationType 为 OP_READ 或 OP_WRITE,不是通用的代码吧?
***************************
OP_READ 或 OP_WRITE,都是自己定义的标识当前投递回来的信息的类型,不是通用的代码。另外想请教:
如果有个客户端连接上IOCP服务器,但是没有收发数据,请问服务器程序会不会阻塞在某个地方?(thread内阻塞也算)
********************************************
服务器程序是否会阻塞在某个地方不是由socket是否有数据送达来决定的,而是由IOCP端口上是否有信息来决定的,当然,如果所有的socket都没有任何行为,那么所有的线程都是阻塞的