进程间通信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 }
作者:唐宋元明清2188
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。