• 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.”

  • 相关阅读:
    关于多机处理问题
    Prime
    Djkstra
    jbdc总结
    mysql存储过程
    sqlHelper 类型的编写
    JDBC开发
    java线程
    java事件监听机制
    坦克大战编程
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2554068.html
Copyright © 2020-2023  润新知