2012-08-01 186 views
1

我想从5000迭代UDP端口50XX如何检查是否UDP端口是打开还是关闭

我如何检查是否一个特定的端口已打开或免费使用?要求一个共享资源,如UDP端口号时,要求

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

你有什么企图?发布一些代码,我们可以帮助您解决它。 – Bernard 2012-08-01 02:35:55

+0

提示:使用[UdpClient.Connect()](http://msdn.microsoft.com/zh-cn/library/system.net.sockets.udpclient.connect.aspx)方法。 – Bernard 2012-08-01 02:39:35

+1

您是在主机上还是在尝试连接的机器上检查它? – ikh 2012-08-01 02:40:32

回答

1

通常情况下:

我用这个代码,但它始终返回false“是本可现在呢?”没有生产力。无论您在下一个微秒内得到的答案可能会变得不正确,因为另一个应用程序可能会改变无效的答案。

你可以做的是让操作系统为侦听特定端口上(“收购”的资源)。操作系统要么说,这里是一个手柄或什么的,或者没有,一些其他进程正在使用该特定端口。无论哪种方式,你都可以得到一个你可以明确采取行动的答案。 (特别是,如果你没有一个答案,尝试不同的端口)。