超时连接后如何关闭TCP连接?

Posted

技术标签:

【中文标题】超时连接后如何关闭TCP连接?【英文标题】:How to close TCP connection after time out connection? 【发布时间】:2022-01-20 03:44:36 【问题描述】:
HttpClient httpClient= HttpClient.create().tcpConfiguration(tcpClient -> 
    tcpClient.option(ChannelOption.SO_KEEPALIVE, true);
    tcpClient.option(EpollChannelOption.TCP_KEEPIDLE, 120);
    tcpClient.option(EpollChannelOption.TCP_KEEPINTVL, 10);
    tcpClient.option(EpollChannelOption.TCP_KEEP, 6);
            return tclClient;
          )
           .secure(t -> t.sslContext(context));

此代码正在创建一个 10 分钟的 TCP 连接。之后,我想在发生 TimeOutException 时从应用程序端关闭 TCP 连接。怎么办?

【问题讨论】:

【参考方案1】:

在 try catch 块之后,只需使用 finally 块并关闭您的连接:

try 
    ...
 catch (TimeOutException exp) 
    ...
 finally 
    ...
    connection.close();
    ...

【讨论】:

以上是关于超时连接后如何关闭TCP连接?的主要内容,如果未能解决你的问题,请参考以下文章

tcp连接状态有大量的timewait 状态,导致连接等待至超时,怎么解决

HttpClient连接池的连接保持超时和失效机制

HttpClient连接池的连接保持超时和失效机制

TCP的超时重传

如何设置TCP sokcet连接的超时时间

TCP