zoukankan      html  css  js  c++  java
  • TCP连接,底层重试机制,心跳包机制

    客户端与服务器端连接建立后,后面的故事会是怎样的呢,连接断开怎么办,需不需要重连,如何知道对方是活着的?一方强制关闭连接,对另一方的影响是什么呢?

    下面,逐一回答以下问题。

    【客户端】

    • 重连任务:如果session关闭,那么可以尝试做重连,例如加重连task等。具体的连接过程,与普通的客户端连接建立过程并无不同。
    • 心跳包判活:如果session空闲,可以可以尝试发些心跳包,监听是否能正常收到心跳包响应。

    【服务器端】

    • 如果连接断开,应如何处理?Server端不做定时扫描,断了就断了,等客户端重连,否则不是无谓操作麽。

    【如果一方关闭了,另一方什么反应?应如何处理?】

    • 客户端关闭,服务器端如何做?

    a). 如果此时,Server端正在读/写,则会报错:“java.io.IOException: 远程主机强迫关闭了一个现有的连接”,且socket上既有内容将会“丢失”。

    b). Server端可正常关闭连接,无需建重连任务。

    • 服务器端关闭,客户端如何做?

    a). 如果此时,Client端正在读/写,则会报错:“java.io.IOException: 远程主机强迫关闭了一个现有的连接”,且socket上既有内容将会“丢失”。

    b). 启动重连任务。

    • 如果Client尝试去连接的时候,Server端并未启动,如何?

    a). Client会收到异常报错:“connection refused.”

  • 相关阅读:
    Bootstrap3 表格-条纹状表格
    Bootstrap3 表格-基本表格
    Bootstrap3 代码-程序输出
    Bootstrap3 代码-变量
    垃圾回收相关(深入理解Java虚拟机中的内容)
    JVM内存管理及GC机制
    关于Spring IOC (DI-依赖注入)需要知道的一切
    关于 Spring AOP (AspectJ) 该知晓的一切
    JDK1.8源码分析之HashMap
    深入理解Java类加载器(ClassLoader)
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2554068.html
Copyright © 2011-2022 走看看