在TCP/IP协议中,服务端需要去监听客户端的端口,开始监听,我们需要检测使用的端口是否被占用,获取系统当前使用的所有端口号,用此端口进行匹配即可。

代码如下

       internal static Boolean IsPortOccupedFun2(Int32 port)
{
System.Net.NetworkInformation.IPGlobalProperties iproperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
System.Net.IPEndPoint[] ipEndPoints = iproperties.GetActiveTcpListeners();
foreach (var item in ipEndPoints)
{
if (item.Port == port)
{
return true;
}
}
return false;
}

而如果需要实时的刷新端口占用情况,并用其进行TCP连接,希望自己占用的端口在呈现给自己时显示不被占用,例如当服务端UI界面显示监听192.168.0.162IP的客户端时用的9922端口,而不希望在同一DataGridView表中,此行的后面“端口是否被占用“”列中显示已被占用的红色X号图标 , 即在检测端口状态时如果是与此IP通讯占用,排除此IP,如下图

代码如下

        static List<IpAndPort> IpAndPortList = new List<IpAndPort>();
static List<string> PortList = new List<string>(); internal static Boolean IsPortOccupedFun2(Int32 port, IpAndPort m_PortList)
{
System.Net.NetworkInformation.IPGlobalProperties iproperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
System.Net.IPEndPoint[] ipEndPoints = iproperties.GetActiveTcpListeners(); if (!PortList.Contains(m_PortList.port))
{
PortList.Add(m_PortList.port);
IpAndPortList.Add(m_PortList);
}
foreach (var item in ipEndPoints)
{ if (item.Port == Convert.ToInt32(m_PortList.port))
{
foreach (IpAndPort ipPort in IpAndPortList)
{
if (ipPort.ip.Equals(m_PortList.ip) && ipPort.port.Equals(m_PortList.port))
{
return false;
}
}
return true;
}
}
return false;
} public class IpAndPort
{
public string ip;
public string port;
}

C#实时检测端口占用情况的更多相关文章

  1. ubuntu系统检测端口占用情况

    参考链接: https://blog.csdn.net/qwfys200/article/details/80837036 命令: $ sudo netstat -tupln

  2. 26. linux查看端口占用情况

    linux系统下,查看端口占用情况的命令:lsof -i[root@www ~]# lsof -i

  3. windows 如何查看端口占用情况?

    原文来自:http://www.iteye.com/topic/1117270 开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这 ...

  4. 在windows和linux下如何查看80端口占用情况?是被哪个进程占用?如何终止等

    一.在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&quo ...

  5. RC-50221 问题解决 - netstat 查看端口占用情况

    查看端口占用情况   netstat -an|grep LIST|grep 15     数据库监听占用情况. netstat -an|grep 1521                  1521为 ...

  6. Windows系统端口占用情况检查脚本

    写了一段检查Windows下端口占用情况的脚本,代码如下: function checkPid($result,$port){ $port = $port.split(":")[1 ...

  7. 查看Linux下端口占用情况的命令

    在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况.比如HTTP使用80端口,但当启动Apache时,却发现此端口正在使用. 这种情况大多数是由于软件冲突.或者默认端口设置不 ...

  8. 【转】windows 如何查看端口占用情况?

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...

  9. Mac查看端口占用情况

    Mac下使用lsof(list open files)来查看端口占用情况,lsof 是一个列出当前系统打开文件的工具. 使用 lsof 会列举所有占用的端口列表: $ lsof 使用less可以用于分 ...

随机推荐

  1. rails 查看项目的所有路由

    rails routes

  2. 52.tableViewCell重用机制避免重复显示问题

    表刷新超出页面显示的内容会重复出现 -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSInd ...

  3. pat1079+1086+1090+1094(树的遍历)感想

    今天做了这4道题,虽然大部分以前做过,但还是有些知识掌握不全. 总结一下所用的树的知识及解决方法 (1)非二叉树的遍历: 非二叉树就是图,所以它的存储结构类似邻接表,c++提供了vector数组可以很 ...

  4. ACM-ICPC 2018 徐州赛区网络预赛 G Trace(逆向,两颗线段树写法)

    https://nanti.jisuanke.com/t/31459 思路 凡是后面的轨迹对前面的轨迹有影响的,可以尝试从后往前扫 区间修改需要push_down,单点更新所以不需要push_up(用 ...

  5. php检测服务器是否可用 不可用发动钉钉消息

    <?php set_time_limit(0); //ping一个IP地址,能不能通 function ping($ip) { $ip_port = explode(':', $ip); // ...

  6. C#程序集问题:混合模式程序集是针对“v2.0.50727”版的运行时生成的.....

    今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版 ...

  7. (最长不降子序列)最少拦截系统 -- hdu -- 1257

    http://acm.hdu.edu.cn/showproblem.php?pid=1257 最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  8. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  9. 《计算机科学基础》学习笔记_Part 1 Computer and Data

    Technorati Tags: 计算机科学基础,读书笔记 Chapter 1. Introduction Ø  计算机:黑盒,Output Data=f(Input Data, Program) Ø ...

  10. 转载:Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty("user.dir")的理解

    唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException  系统找不到指定的文件,气死人啦. 还有就是:System.get ...