我是这么干的!!
在主线程里发送数据后开定时器(定时5秒),并开一个子线程监听数据接收。但是有时候在子线程里面接收到数据后关闭不了定时器,这是为什么呢?
或者你们有好的方式来实现超时重传机制吗??????C#UDP

解决方案 »

  1.   

    如果搞这个,那么为什么不直接进行TCP通讯呢?测试一下,如果是鸡肋那么就立刻转到tcp吧。
      

  2.   

    在主线程里打开的定时器,要在子线程里面关闭,就是这么个问题哦!我用的timer.Stop(),貌似没有关闭了!而且这种情况时偶尔发生的,不是经常!
      

  3.   

    我在发送数据后开启定时器来实现超时重传,再开一个子线程来阻塞接收数据。一旦定时器定时时间到,进入elapsed事件重传数据。但是在子线程里接收到数据后有时候就不能关闭定时器。这是不是和C#中定时器使用机制有关????我用的是System.Timers.Timer .
      

  4.   

    如果包很大,传输时间远远大于“定时器”所定的时间,是不是又开始重新传了?表这样搞啊,分包传,收发双方有一套生成特征码的东西,如果接收方返回特征码不对,发送方就重传,接收方就弃包,重新接,如果一定要“定时器”,也是要做定时对码上。最后,还是建议用TCP