如何检查UDP端口是打开还是关闭

时间:2012-08-01 02:34:25

标签: c#

我想将UDP端口从5000迭代到50xx

如何检查特定端口是否已打开或可以免费使用?

我使用此代码,但它总是返回false:

public bool PortIsUsed(int myport)
{
   bool alreadyinuse = (from p in System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners() where p.Port == myport select p).Count() == 1;
   return alreadyinuse;
}

1 个答案:

答案 0 :(得分:1)

通常在要求共享资源(如UDP端口号)时,询问“这是否可用?”没有生产力。无论你得到哪个答案,在下一个微秒内都可能会变得不正确,因为另一个应用程序可能会改变使答案无效的东西。

您可以要求操作系统监听特定端口(“获取”资源)。操作系统会说,这里是句柄或其他,或者没有,其他一些进程正在使用该特定端口。无论哪种方式,你都会得到一个你可以明确采取行动的答案。 (具体来说,如果您得到 no 的答案,请尝试使用其他端口。)