zoukankan      html  css  js  c++  java
  • 查看端口连接状态

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.NetworkInformation;
    using System.ServiceModel.Description;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Client
    {
        class Program
        {
            static void Main(string[] args)
            {
                var portList = new List<int>();
                portList.Add(3389);
                portList.Add(5900);
                portList.Add(1500);
    
                var portDic = GetConnectionsStatus(portList);
    
                foreach (var kvp in portDic)
                {
                    Console.WriteLine("如下端口已经建立连接, 连接信息为:port = {0}, remote = {1}", kvp.Key, GetHostNameByIp(kvp.Value.Address.ToString()));
                }  
              
                Console.WriteLine();
                Console.ReadLine();
            }
    
            public static Dictionary<int, IPEndPoint> GetConnectionsStatus(List<int> portList)
            {
                var myDictionary = new Dictionary<int, IPEndPoint>();
    
                var properties = IPGlobalProperties.GetIPGlobalProperties();
                var connections = properties.GetActiveTcpConnections();
                string ip = GetLocalIp();
    
                foreach (var t in connections)
                {
                    if (t.State == TcpState.Established
                      && t.LocalEndPoint.Address.ToString() == ip
                    && portList.Contains(t.LocalEndPoint.Port))
                    {
                        myDictionary.Add(t.LocalEndPoint.Port, t.RemoteEndPoint);
                    }
                }
                return myDictionary;
            }
    
            static string GetLocalIp()
            {
                string hostname = Dns.GetHostName();//得到本机名   
                IPHostEntry localhost = Dns.GetHostByName(hostname);//只得到IPv4的地址   
                //IPHostEntry localhost = Dns.GetHostEntry(hostname);//IPv4和IPV6地址
                IPAddress localaddr = localhost.AddressList[0];
                return localaddr.ToString();
            }
    
            public static string GetHostNameByIp(string ip)
            {
                ip = ip.Trim();
                if (ip == string.Empty)
                    return string.Empty;
                try
                {
                    // 是否 Ping 的通
                    //if (this.Ping(ip))
                   // {
                        System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(ip);
                        return host.HostName;
                  // }
                    //else
                     //   return string.Empty;
                }
                catch (Exception)
                {
                    return string.Empty;
                }
            }
        }
    }
  • 相关阅读:
    /sbin/nologin 和 /bin/false 的区别
    lesson
    df 命令详解
    课后习题-7 阶段汇总
    javascript Window Navigator
    javascript 正则表达式
    linux crontab 的使用
    linux环境变量
    linux第一个C语言和sh脚本
    linux 文件常用操作
  • 原文地址:https://www.cnblogs.com/haorui/p/3735138.html
Copyright © 2011-2022 走看看