gpt4 book ai didi

c# - UDP端口开放检查

转载 作者:太空狗 更新时间:2023-10-29 18:08:47 26 4
gpt4 key购买 nike

在同一台机器上检查 UDP 端口是否打开的最佳方法是什么。我有端口号 7525UDP,如果它是开放的,我想绑定(bind)到它。我正在使用这段代码:

while (true) 
{

try {socket.bind()}

catch (Exception ex)

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

但是有没有指定的函数可以检查UDP端口是否打开。不为 UDP 端口扫描整个表集也很好。

最佳答案

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?
}

关于c# - UDP端口开放检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5879605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com