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;
                }
            }
        }
    }
  • 相关阅读:
    Java Object类
    Java StringBuffer类
    Java String 类
    vuex的使用总结
    vue 周期函数
    vue-cli keep-alive用法以及activated,deactivated
    vue-cli 跳转方式
    vue-cli watch/timer
    vue-cli 使用better-scroll
    vue-cli less使用
  • 原文地址:https://www.cnblogs.com/haorui/p/3735138.html
Copyright © 2011-2022 走看看