使用Super Simple TCP连接外部TCP服务器超时,如何忽略异常持续重试?
Super Simple TCP连接超时自动重连解决方案
Super Simple TCP原生支持自动重连配置,无需手动捕获异常做复杂逻辑处理,也可根据需求自定义重试规则,具体实现方法如下:
1. 启用内置自动重连功能
初始化SuperSimpleTcpClient实例后,直接配置自带的重连参数即可实现持续自动重连:
- 将
AutoReconnect属性设置为true开启自动重连能力 - 将
AutoReconnectIntervalMs属性设置为你需要的重试间隔(单位:毫秒),比如设置为3000即每3秒尝试重连一次
示例代码:
// 替换为你的目标服务器IP和端口 var client = new SuperSimpleTcpClient("192.168.1.100", 8080); // 开启自动重连 client.AutoReconnect = true; // 设置3秒重试间隔 client.AutoReconnectIntervalMs = 3000; // 可选:注册断开连接事件,用于日志排查问题 client.Events.Disconnected += (sender, args) => { Console.WriteLine($"连接已断开,将自动重试,断开原因:{args.Reason}"); }; // 启动连接 client.Connect();
2. 自定义异常捕获重试逻辑(适用于需要灵活控制重试规则的场景)
如果你需要自定义重试次数、触发条件、退避规则,可以手动捕获超时异常,自行实现重试循环:
// 最大重试次数,设置为-1即为无限重试 int maxRetryCount = -1; int retryIntervalMs = 3000; int currentRetryTimes = 0; var client = new SuperSimpleTcpClient("你的目标服务器IP", 端口号); while (true) { try { client.Connect(); Console.WriteLine("连接成功"); break; } catch (TimeoutException) { currentRetryTimes++; if (maxRetryCount != -1 && currentRetryTimes > maxRetryCount) { Console.WriteLine($"已达到最大重试次数{maxRetryCount},终止连接尝试"); throw; } Console.WriteLine($"连接超时,第{currentRetryTimes}次重试,等待{retryIntervalMs}ms"); Thread.Sleep(retryIntervalMs); } }
注意事项
- 如果你已经确认端口开放仍频繁出现超时,建议先排查两端防火墙规则、网络路由是否可达、服务器侧是否配置了IP白名单限制
- 无限重试场景建议增加指数退避逻辑,每次重试间隔逐次翻倍,最高设置30秒上限,避免频繁重试给服务器造成不必要的压力
内容的提问来源于stack exchange,提问作者Nazier Chand
相关产品推荐
相关产品推荐

