none
请问如何以编程的方式检查包含特定IP或计算名的远程连接是否存在? RRS feed

  • 问题

  • 请问如何以编程的方式检查包含特定IP或计算名的远程连接是否存在?

    比如下图,如何检查是否有到et_pdc或10.110.4.11的远程连接?

    2017年6月20日 11:26

答案

  • 我们一般用模拟TCP Ping的方式检验远程机器是否联通:

     using (var sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                {
                    sock.Blocking = true;

                    var stopwatch = new Stopwatch();
                    stopwatch.Start();
                    try
                    {
                        sock.Connect(ip);
                        stopwatch.Stop();                   
                    }
                    catch (Exception e)
                    {
                        var data = new MonitorData(metaData.ID, -50.00);
                        data.Ext.Add("TcpError", e.Message + e.ToString());
                        throw;
                    }
                    finally
                    {
                        try
                        {
                            sock.Close();
                        }
                        catch { }
                    }
                }


    ericzhou

    • 已标记为答案 leon1526 2017年6月21日 8:21
    2017年6月20日 13:28
  • 可以获取当前活动的链接:

    比如命令:netstat -na

    这里可以看到所有ip和端口,过滤这个结果就能得到是否有特定的链接了。


    family as water

    • 已标记为答案 leon1526 2017年6月21日 8:21
    2017年6月20日 13:33

全部回复

  • 我们一般用模拟TCP Ping的方式检验远程机器是否联通:

     using (var sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                {
                    sock.Blocking = true;

                    var stopwatch = new Stopwatch();
                    stopwatch.Start();
                    try
                    {
                        sock.Connect(ip);
                        stopwatch.Stop();                   
                    }
                    catch (Exception e)
                    {
                        var data = new MonitorData(metaData.ID, -50.00);
                        data.Ext.Add("TcpError", e.Message + e.ToString());
                        throw;
                    }
                    finally
                    {
                        try
                        {
                            sock.Close();
                        }
                        catch { }
                    }
                }


    ericzhou

    • 已标记为答案 leon1526 2017年6月21日 8:21
    2017年6月20日 13:28
  • 可以获取当前活动的链接:

    比如命令:netstat -na

    这里可以看到所有ip和端口,过滤这个结果就能得到是否有特定的链接了。


    family as water

    • 已标记为答案 leon1526 2017年6月21日 8:21
    2017年6月20日 13:33