`
clarancepeng
  • 浏览: 191727 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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中移除。
分享到:
评论

相关推荐

    Linux下Socket连接超时的一种实现方法

    Linux 下 Socket 连接超时的一种实现方法 在 Linux 环境下,设置套接字(Socket)连接超时是一件非常重要的事情。下面我们将详细介绍 Linux 下 Socket 连接超时的一种实现方法。 首先,需要创建套接字,并将其设置...

    易语言socket连接超时例程

    易语言socket连接超时例程源码,socket连接超时例程,子程序1,socket,htons,inet_addr,Connect,closesocket,WSAStartup,setsockopt,ioctlsocket,select

    socket连接超时例程.rar

    Socket连接超时是网络编程中经常遇到的问题,特别是在服务器响应慢或者网络不稳定的情况下。本篇将详细讲解Socket连接超时的相关知识点,结合易语言提供的源码例程,帮助你深入理解并解决此类问题。 首先,Socket是...

    windows下设置socket的connect超时

    在Windows环境下进行网络编程时,有时需要对socket连接进行超时控制,特别是在客户端与服务器通信的过程中,如果连接请求长时间没有响应,程序可能会陷入无休止的等待状态,从而导致资源浪费甚至程序卡死。...

    易语言socket连接超时源码例程.rar

    "易语言socket连接超时源码例程.rar"是一个针对易语言(EasyLanguage)平台的示例程序,它着重解决了在网络编程中常见的问题——Socket连接超时。易语言是中国的一款中文编程语言,旨在降低编程门槛,使得更多非专业...

    c#socket连接池和连接超时时间设置

    提供一个c# socket连接池设计的例子,解决socket并发连接限制的问题,并且提供一种设置连接超时时间的方法,默认连接超时时间是不能设置的,提供了socket网络发送数据的接口.可用于pos小票打印机通讯。

    socket非阻塞超时设置

    在标题"socket非阻塞超时设置"中,我们关注的是如何配置Socket使其在等待数据时不会永久阻塞,并且能够设定一个超时时间。这种方式适用于那些需要快速响应或者避免程序因长时间等待而挂起的场景。 非阻塞模式是...

    易语言socket连接超时源码例程.zip易语言项目例子源码下载

    易语言socket连接超时源码例程.zip易语言项目例子源码下载易语言socket连接超时源码例程.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考

    异步发送解决socket连接超时

    利用新建类,异步传送参数,解决断连接向多个ip发送socket包产生socket.connect超时的问题。实现向每一个ip发送包新建立一个线程,由于是新建立的线程,全部异步,所以没法记录文本文件(同一个文件同时被记录),...

    Socket接受数据超时

    Socket接收数据超时是一个常见的问题,尤其在处理高并发或者网络环境不稳定的情况下。这个问题涉及到网络编程中的异步编程模型,以及如何优雅地处理阻塞操作。在本篇中,我们将深入探讨Socket接收数据超时的原理,...

    C# Socket连接请求超时机制实现代码分享

    .Net的System.Net.Sockets.TcpClient和System.Net.Sockets.Socket都没有直接为Connect/BeginConnect提供超时控制机制。因此,当服务器未处于监听状态,或者发生网络故障时,客户端连接请求会被迫等待很长一段时间,...

    Java中Socket设置连接超时的代码分享

    Java中Socket设置连接超时的代码分享 Java 中 Socket 设置连接超时是非常重要的,因为如果超时时长过长的话,在开发时会影响测试。下面我们来详细介绍如何设置 Java 中 Socket 的连接超时。 首先,我们需要了解 ...

    易语言源码易语言socket连接超时源码例程.rar

    在“易语言源码易语言socket连接超时源码例程.rar”这个压缩包中,包含的是一个使用易语言实现的网络编程示例,主要涉及的是socket连接和超时处理这两个关键知识点。 首先,我们来理解一下什么是socket。Socket是...

    python设定并获取socket超时时间的方法

    python写法 import socket def test_socket_timeout(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print "Default socket timeout: %s" %s.get... #针对单个socket实例的超时 test_socket_timeout

    JAVA Socket超时浅析 转.doc

    Java Socket超时机制详解 Java Socket是用于实现网络通信的基础组件,它基于TCP/IP协议,提供了客户端和服务端之间数据传输的通道。在Java中,ServerSocket用于监听客户端的连接请求,而Socket则用于建立和管理实际...

    JAVA Socket超时浅析.docx

    Java中的Socket超时机制是网络编程中非常关键的一部分,它涉及到网络通信的可靠性和效率。Socket是基于TCP/IP协议实现的,提供了应用层与传输层之间的接口,让我们可以通过流(InputStream和OutputStream)来读写...

    PHP中Socket连接及读写数据超时问题分析

    然而,Socket连接和数据读写过程中可能会遇到超时问题,这可能导致程序执行效率降低或者出现错误。本文将详细分析PHP中Socket连接及读写数据超时问题,并提供相应的解决策略。 首先,PHP的`fsockopen()`函数用于...

    socket消息交换

    Socket消息交换是网络编程中的一个重要概念,特别是在Java中,它被广泛用于实现客户端与服务器之间的通信。本主题将深入探讨如何使用Java Socket进行简单的消息分发,并结合观察者模式更新消息状态。 首先,Socket...

Global site tag (gtag.js) - Google Analytics