c# TLS会话断开

本文关键字:断开 会话 TLS | 更新日期: 2023-09-27 17:51:22

我有一个客户端/服务器TCP场景,使用c#编写TLS连接。

客户端在安静并恢复(非活动时间~25分钟)后无法传递消息。但如果我保持客户端聊天(每30秒一次),就没有问题。

客户端和服务器都没有看到断开连接,但流量停止流动(TLS会话中断??我只是猜测)。

我需要保持连接,因为服务器需要随时响应。

TCP套接字连接和TLS身份验证后,服务器每5分钟有一次keepalive

Q1)是否有一种方法可以配置SslStream或c#中的套接字来使用TicketKeys并重用会话?

Q2)如果问题不是会话重用,如果我使用WireShark或NetMonitor,我应该寻找什么,以确定为什么流量不再流动,即使各方认为他们是连接的?

Thx

c# TLS会话断开

  • 不要在服务端和客户端设置超时

    sslStream.ReadTimeout = 5000;
    sslStream.WriteTimeout = 5000;
    
  • 设置大超时

  • 实现如下命令:Ping/Pong心跳命令,在客户端,在单独的线程中,每隔X秒发送Ping到服务器