查看端口连接状态

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;
            }
        }
    }
}
时间: 2024-11-10 14:59:47

查看端口连接状态的相关文章

CentOS查看系统连接状态

1.查看TCP连接状态 netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' 或netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'netstat -n | awk '/

查看mysql连接状态各类参数

命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist; 命令: show status; 命令:show status like '%下面变量%'; Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量. Aborted

Linux查看端口使用状态及启动

Netstat -tln 命令是Linux查看端口使用情况 /etc/init.d/vsftp start 是用来启动ftp端口~! 看文件/etc/services netstat Linux查看端口查看已经连接的服务端口(ESTABLISHED) netstat -a Linux查看端口查看所有的服务端口(LISTEN,ESTABLISHED) sudo netstat -ap Linux查看端口查看所有的服务端口并显示对应的服务程序名 nmap <扫描类型><扫描参数> 例如

查看网卡连接状态

[[email protected] ~]# mii-tool eth0 SIOCGMIIPHY on 'eth0' failed: Operation not supported 如果是在服务器上不会显示成这样的,由于是虚拟机所以显示 "not supported", 如果是真机应该显示如下内容: [[email protected] sphinx]# mii-tool eth0 eth0: negotiated 100baseTx-FD, link ok 只要看到 "li

Linux查看端口使用状态、关闭端口方法

首先你必须知道,端口不是独立存在的,它是依附于进程的.某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了.下次若某个进程再次开启,则相应的端口也再次开启.而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口. 1. 可以通过 netstat -anp 来查看哪些端口被打开.(注:加参数’-n’会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号) 2. 然后可以通过 lsof -i:$PO

Linux 查看网络连接状态

CLOSED:无连接是活动的或正在进行ESTABLISED:已建立连线的状态:SYN_SENT:发出主动连线 (SYN 标志) 的连线封包:SYN_RECV:接收到一个要求连线的主动连线封包:FIN_WAIT1:该插槽服务(socket)已中 断,该连线正在断线当中:FIN_WAIT2:该连线已挂断,但正在等待对方主机回应断线确认的封包:TIME_WAIT:该连线已 挂断,但 socket 还在网路上等待结束:LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅.CLOSIN

netstat 查看端口

网络连接状态 sshd  远程连接服务    22(端口)    rsync  873   sendmail  25    memcached  11211 查看监听端口 [[email protected] ~]# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address               Foreign Address             State    

linux中查看http各种状态数量

转自: http://www.cnblogs.com/wayne173/p/5652043.html 我们的网站部署在linux的服务器上,特别是web服务器,我们可能有时候做为运维人员,肯定是要查看网站的并发连接数是不是达到瓶颈等,所以在linux下,我们如何查看服务器的并发连接数呢?使用以下命令即可分组查看各种连接状态哦: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 解释: 返回结果示例: LAST

你真的会Linux常用命令么——netstat查看端口

一.使用netstat命令可查看端口使用情况 (1) 查看服务端口是否启用.常用于查看服务器进程端口是否启动 [[email protected] ~]# netstat -nlp |grep 21050 tcp6 0 0 :::21050 :::* LISTEN 10859/impalad (2) 查看端口连接情况 [[email protected] ~]# netstat -nat|grep -i "21050" 不带进程号 tcp6 0 0 :::21050 :::* LIST