我通过CAsyncSocket使用UDP,需要检测超时以重传
多谢!

解决方案 »

  1.   

    在窗口中响应WM_TIMER消息,然后调CAsyncSocket的函数。
      

  2.   

    理论上可以,但很麻烦,也没有效率,不推荐.
    CAsyncSocket内部有个窗口,可以传递wm_timer,
    但是,内部窗口是很多socket共用的,你需要自己写代码将消息分派到socket.
    这意味着要改写MFC底层代码.
      

  3.   


    刚才谷歌到settimer+回调函数
    但是必须是静态函数,无法访问非静态成员
    faint...
      

  4.   

    采用停等协议,发送方和接收方使用UDP进行通信
      

  5.   

    SetTimer()经常是不准确的,因为窗口的消息机制是消息先来就先处理,但如果消息多了,很多消息会被延迟处理,要求精确的不能用SetTimer(),太多消息要处理的也不能依赖SetTimer().试下使用NT本身的内核Timer:
    CreateTimerQueue()
    CreateTimerQueueTimer()
    NT的系统就能使用,好处是精确度高,而且比较独立.
      

  6.   

    由于有多个客户端,所以这个方法不好。
    不过我谷歌到了CMap+settimer+回调函数
    还是谢谢大家。
      

  7.   

    I agree with the first floor.