美文网首页
C# Sockect 客户端检测与服务端的连接

C# Sockect 客户端检测与服务端的连接

作者: 赌二八定律 | 来源:发表于2020-11-25 14:51 被阅读0次
    方法一,使用cmd netstat -n查看当前端口运行情况
    public string Execute(string command)
            {
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;    //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                p.StartInfo.CreateNoWindow = true;//不显示程序窗口
                p.Start();
                //向cmd窗口发送输入信息  + "&exit"
                p.StandardInput.WriteLine(command + "&exit");
                p.StandardInput.AutoFlush = true;
                //p.StandardInput.WriteLine("exit");
                //获取cmd窗口的输出信息
                string output = p.StandardOutput.ReadToEnd();
                Console.WriteLine(output);
                p.WaitForExit();
                p.Close();
                return output;
            }
    
                //判断执行结果是否包含服务端连接即可
                string results = Execute("netstat -n");
                if (results.Contains("172.168.52.222:8999"))
                {
                    Console.WriteLine("---results true ---");
                }
                else
                {
                    Console.WriteLine("---results false ---");
                }
    
    方法二,使用客户端程序再向服务端临时创建一个连接,用连接结果判断连接情况,记得关闭临时创建的连接
    方法三,使用DotNetty框架,再ChannelHandlerAdapter接口的ExceptionCaught方法和HandlerRemoved方法监听实时的连接情况
    public class TcpServerHandler : ChannelHandlerAdapter
        {
            
            /// <summary>
            /// 捕获 异常,并输出到控制台后断开链接,提示:客户端意外断开链接,也会触发
            /// </summary>
            public override void ExceptionCaught(IChannelHandlerContext context, Exception exception)
            {
                Log.WriteLog($"客户端{context}下线.");
                context.CloseAsync();
            }
    
            /// <summary>
            /// 客户端下线断线时
            /// </summary>
            public override void HandlerRemoved(IChannelHandlerContext context)
            {
                Log.WriteLog($"客户端{context}下线.");
                base.HandlerRemoved(context);
            }
        }
    

    相关文章

      网友评论

          本文标题:C# Sockect 客户端检测与服务端的连接

          本文链接:https://www.haomeiwen.com/subject/ikrniktx.html