进程间通信WebSocket 服务端未启动时,客户端重连报错

当WebSocket服务端未启动时,我们在客户端申请连接,会报 System.Net.Sockets.SocketException 异常。

当然,我们调试时异常设置默认是不勾选这个的。所以不影响正常调试。

但小伙伴发现,依然会影响界面卡顿,尤其是书写性能受影响。

所以,需要确认判断服务端是否已启动,再让客户端连接服务端,规避掉这个异常。

websocket中没有这样属性,能获取到服务端启动的状态。

看了下webSocket的内部机制,是通过IP+端口TCP进行通信的。所以可以查看端口占用情况来判断:

如上图中,Listening的2710端口是服务端,下面Established表示和服务端已建立连接的2个客户端。

也可以用C#判断端口是否占用:

复制代码
 1     /// <summary>
 2     /// 判断服务端是否已启动
 3     /// </summary>
 4     /// <returns></returns>
 5     public static bool CheckServerListening()
 6     {
 7         var port = ChannelCustomText.Port;
 8         IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
 9         IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();
10         foreach (IPEndPoint endPoint in ipEndPoints)
11         {
12             if (endPoint.Port == port)
13             {
14                 return true;
15             }
16         }
17         return false;
18     }
复制代码

 

posted @   唐宋元明清2188  阅读(488)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示
剑桥
16:15发布
剑桥
16:15发布
7°
西南风
3级
空气质量
相对湿度
66%
今天
2°/10°
周三
2°/8°
周四
中雨
2°/7°