当前位置:  开发笔记 > 编程语言 > 正文

UDP端口打开检查

如何解决《UDP端口打开检查》经验,为你挑选了1个好方法。

在同一台计算机上检查UDP端口是否打开的最佳方法是什么.我有端口号7525UDP,如果它打开我想绑定它.我正在使用此代码:

while (true) 
{ 

  try {socket.bind()}

  catch (Exception ex) 

  {MessageBox.Show("socket probably in use");}
}

但是是否有指定的功能可以检查UDP端口是否打开.如果没有扫描UDP端口的整个表集也会很好.



1> Nathan..:
int myport = 7525;
bool alreadyinuse = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners().Any(p => p.Port == myport);

下面的评论提出了一个变量,它将提供第一个免费UDP端口......但是,建议的代码效率很低,因为它多次调用外部程序集(取决于正在使用的端口数).这是一个更有效的变体,它只调用一次外部程序集(并且更具可读性):

    var startingAtPort = 5000;
    var maxNumberOfPortsToCheck = 500;
    var range = Enumerable.Range(startingAtPort, maxNumberOfPortsToCheck);
    var portsInUse = 
        from p in range
            join used in System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners()
                on p equals used.Port
                    select p;

    var FirstFreeUDPPortInRange = range.Except(portsInUse).FirstOrDefault();

    if(FirstFreeUDPPortInRange > 0)
    {
         // do stuff
         Console.WriteLine(FirstFreeUDPPortInRange);
    } else {
         // complain about lack of free ports?
    }

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有