关闭

C#获取已被使用的网络端点以及判断端口是否已被使用

2470人阅读 评论(0) 收藏 举报
using System.Net;
using System.Net.NetworkInformation;
using System.Collections.Generic;
using System.Collections;

public class OperateIPEndPoint
{
   /// <summary>
   /// 获取本机已被使用的网络端点
   /// </summary>
   public IList<IPEndPoint> GetUsedIPEndPoint()
   {
      //获取一个对象,该对象提供有关本地计算机的网络连接和通信统计数据的信息。
      IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();

      //获取有关本地计算机上的 Internet 协议版本 4 (IPV4) 传输控制协议 (TCP) 侦听器的终结点信息。
      IPEndPoint[] ipEndPointTCP = ipGlobalProperties.GetActiveTcpListeners();

      //获取有关本地计算机上的 Internet 协议版本 4 (IPv4) 用户数据报协议 (UDP) 侦听器的信息。
      IPEndPoint[] ipEndPointUDP = ipGlobalProperties.GetActiveUdpListeners();

      //获取有关本地计算机上的 Internet 协议版本 4 (IPV4) 传输控制协议 (TCP) 连接的信息。
      TcpConnectionInformation[] tcpConnectionInformation = ipGlobalProperties.GetActiveTcpConnections();

      IList<IPEndPoint> allIPEndPoint = new List<IPEndPoint>();
      foreach (IPEndPoint iep in ipEndPointTCP) allIPEndPoint.Add(iep);
      foreach (IPEndPoint iep in ipEndPointUDP) allIPEndPoint.Add(iep);
      foreach (TcpConnectionInformation tci in tcpConnectionInformation) allIPEndPoint.Add(tci.LocalEndPoint);

      return allIPEndPoint;
   }

   /// <summary>
   /// 判断指定的网络端点(只判断端口)是否被使用
   /// </summary>
   public bool IsUsedIPEndPoint(int port)
   {
      foreach (IPEndPoint iep in GetUsedIPEndPoint())
      {
         if (iep.Port == port)
         {
            return true;
         }
      }
      return false;
   }

   /// <summary>
   /// 判断指定的网络端点(判断IP和端口)是否被使用
   /// </summary>
   public bool IsUsedIPEndPoint(string ip, int port)
   {
      foreach (IPEndPoint iep in GetUsedIPEndPoint())
      {
         if (iep.Address.ToString() == ip && iep.Port == port)
         {
            return true;
         }
      }
      return false;
   }
}


0
0
查看评论

C#检查TCP端口号是否被占用

之前找到的方法效率太低,找到个更好的,记录下来。 当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 。 但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被占用。 命名空间System.Net.Net...
  • tianyuzhixina
  • tianyuzhixina
  • 2017-06-14 13:39
  • 745

c#检测远程或本地端口是否打开

  • 2017-08-03 14:30
  • 49KB
  • 下载

C#检查端口是否被占用

<br />--检查端口是否被占用<br />Process p = new Process();<br />p.StartInfo = new ProcessStartInfo("netstat", "-a");<b...
  • shashawoyao
  • shashawoyao
  • 2011-05-16 00:20
  • 3311

C#获取本机上所有网络接口及真实IP地址信息

下面显示了如何获取本机上所有网络接口及IP地址的相关信息 它们层次关联为: 一个本机可以有多个网络接口,这些接口包括实际接口与虚拟接口。 每个网络接口可以得到多个IP地址,可能是IPV4也可能是IPV6。 得到本机的真实IP地址的原理为: 网络接口的状态必须为UP,并且接口类型是Ethernet,并...
  • iloli
  • iloli
  • 2016-04-05 01:12
  • 3522

C#获取本机上所有网络接口及真实IP地址信息

下面显示了如何获取本机上所有网络接口及IP地址的相关信息 它们层次关联为: 一个本机可以有多个网络接口,这些接口包括实际接口与虚拟接口。 每个网络接口可以得到多个IP地址,可能是IPV4也可能是IPV6。 得到本机的真实IP地址的原理为: 网络接口的状态必须为UP,并且接口类型是Ethernet,并...
  • dragonpeng2008
  • dragonpeng2008
  • 2017-05-10 15:43
  • 280

C#查看本地端口使用情况

  • 2011-08-14 14:47
  • 61KB
  • 下载

c# socket 判断端口是否被占用

最近在搞 socket ,遇到端口占用的问题,程序需要自动检测端口是否占用,
  • mendeliangyang
  • mendeliangyang
  • 2014-11-20 10:46
  • 3990

C# 阻塞方式Socket接受异常处理(不定期更新)

经过多次网上资料的查询和同事的探讨;解决了一个很常见很基础的问题,再次记录下;希望能帮助到新人; 问题: 阻塞方式Socket下,接受数据异常处理: 异常:关闭发送客户端; 解决:这类问题只需要一个try catch就可以解决; 异常:拔网线、停电等; 解决: 首先分析下原因,当网络断开时,接收端并...
  • iceagezh
  • iceagezh
  • 2017-04-19 13:25
  • 1564

Shadowsocks错误:端口被占用

System.Exception:端口已被占用 --->Sytem.Net.Sockets.SocketException: 解决的方法是: 1、shadowsocks的本地端口是1080,首先要找到是哪个程序占用了该端口,window+R组合键,调出命令窗口,输入命令:netst...
  • AbbyWang_y
  • AbbyWang_y
  • 2016-11-07 09:14
  • 3991

C#如何判断文件处于打开状态

对于应用程序,有时候可能需要判断某个文件是否已经被打开,也就是指是否被某个流连接着。这在对文件的读写比较频繁的程序中尤为重要,因为一个文件同一时刻只能有一个流连接的。下面的代码也许能有所帮助。 public class FileStatus { [DllImport(...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2012-12-21 16:05
  • 6984
    个人资料
    • 访问:11990235次
    • 积分:66656
    • 等级:
    • 排名:第39名
    • 原创:675篇
    • 转载:2295篇
    • 译文:0篇
    • 评论:558条
    文章分类
    文章存档
    最新评论
    计算流量