WSASend的时候  发送成功  返回值为0 且 WSAGe他LastError 为WSA_IO_PENDING ,但GetQueuedCompletionStatus 却死活收不到完成通知
发生这样的情况的测试条件: 单个客户端,每次重叠发送2个数据包,每50毫秒发送一次 如果是仅仅每次发送一个数据包,就不会出现以上问题
WSASend 都是直接发送,不会有  WSA_IO_PENDING这会是啥原因呢 ,按理应该会收到的啊

解决方案 »

  1.   

    神奇了 ,偶尔有一次测试 发现后面收到一大堆的 WSASend的通知  处理完后又收不到了!
      

  2.   

    都有投递WSASend吗单个客户端,每次重叠发送2个数据包,每50毫秒发送一次,这个也没有什么关系的,是不是你处理的时候流程忘记了
      

  3.   

    WSASend 直接发送都能收到通知,但是当是WSA_IO_PENDING的时候  通知都收不到了
      

  4.   

    找到原因了  通过 一位大哥 野蛮人的指点:野蛮人 说:
    接收方没有接收
    当收到WSA_IO_PENDING时不要继续在同一个OVERLAY上投递。如果你强制投递是不可预知的后果。
    Lee Jim 说:
    WSARecv是没有问题的 WSASend会出现这样的结果么 这个还真不知道呢 那用重叠WSASend是不是不合适呢 有什么解决方案么 服务不能都等待客户端接收完后再投递下一个吧
    野蛮人 说:
    你应该收到这个消息时,进入等状态,直到收到完成通知
    这种情况一般发生在客户来不及接收的情况
    当收到通知后,才能进行下次投递
    否则就出错了