zoukankan      html  css  js  c++  java
  • socket消息超时重发的设想

    我们经常遇到的一个问题就是:发送一条消息,若在T秒内没有收到回应,我们将需要对消息进行重发,若重发N次后再失败,则不再重发。
    对于这个问题,我们可以给每条消息一个ID,为YYYYMMDDHHmmssSSS(当前的时间,精确到毫秒),再定义N-1个HashMap,key为消息ID,value为消息内容。
    首先把这条消息立即发送,并等待回应,同时把这条消息放入上面定义的N-1个HashMap中,定义一个线程专门扫描这N-1个HashMap, 第一个HashMap, ParseLong(ID)+1000*T <= currentTime,则发送此消息,同时把它从HashMap中移除, 第二个HashMap, ParseLong(ID)+1000*2T <= currentTime,则发送此消息,同时把它从HashMap中移除,…… 第N-1个HashMap, ParseLong(ID)+1000*(N-1)*T <= currentTime,则发送此消息,同时把它从HashMap中移除。
    若能收到回应,则把消息从这N-1个HashMap中移除。

  • 相关阅读:
    B3
    B2
    b1
    个人作业——软件工程实践总结作业
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
  • 原文地址:https://www.cnblogs.com/tc310/p/13393248.html
Copyright © 2011-2022 走看看