我用WINSOCK的发送函数发送完信息,需要等待接收到返回信息才能进行下面的操作,请问怎样可以实现.好象用SLEEP()不行.

解决方案 »

  1.   

    MSG msg;//执行循环等待
    while( GetMessage( &msg, NULL, 0, 0))

    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
    }
      

  2.   

    不管怎样,你不应该用Sleep(),应该用SleepEx().
    Sleep()是不可唤醒的,也就是说一直睡到时间结束。
    SleepEx()是可以唤醒的,可以被消息唤醒
      

  3.   

    用多县程吧!WaitForMultiObject()
      

  4.   

    用SleepEx()最简单,SetTimer();
    执行消息队列循环等待不推荐;
    多线程同步的话实现较烦人,但效果较佳
      

  5.   

    nbgyf(小蜜蜂) 说的有理

    用SleepEx()最简单,SetTimer();
    执行消息队列循环等待不推荐;
    多线程同步的话实现较烦人,但效果较佳  ”建议使用Socket自己的异步操作。
    如单线程异步,或多线程,那就是多个Listen Socket异步,还有
    使用Socket作服务器建议用IOCP模式,几乎所有SOcket的操作都
    不占CPU,是完全端口通信。有空再联系。
      

  6.   


    SetEvent
    WaitFroSingleObject.
      

  7.   

    当然是多线程了,这样最好,建议你看看windows 高级编程,里面写的很详细。
      

  8.   

    我的问题很相似,用SOCKET的SEND发送数据后等待SOCKET 接受到返回信息后作出判断,在进一步处理,我用SLEEPEX,当SLEEPEX后面输出AfxmessageBox()能正常执行,曲调输出后,执行错误,请问大家,是不是SLEEPEX返回后,SOCKET并没有接受数据
      

  9.   

    为什么要等待SOCKET接收返回信息,用消息来接受不就得了,不要的内容直接甩掉
      

  10.   

    强烈建议采用多线程来做,这样就不会由于等待而造成程序对cpu占用的过多。也不会产生sleep使得程序无响应。多线程其实很容易,建议看看,windows高级编程。里面讲得很详细,如果有随书的光盘,里面的例子可以拿来作参考。