我正在寻找一段代码,用于检查端口是否已启动。我知道关于这个主题还有其他问题,但是它们有一些问题。他们很慢。如果端口未打开,则冻结我的应用约5-6秒。
我找到的代码(和编辑过的):
public static bool IsServerOnline()
{
try
{
using (var client = new TcpClient())
{
var result = client.BeginConnect(SIMPLE_CONFIG.IP, SIMPLE_CONFIG.PORT, null, null);
// [declaration in SIMPLE_CONFIG.cs] SIMPLE_CONFIG.TIMEOUT = new Timespan(0,0,1); it should be 1 second
var success = result.AsyncWaitHandle.WaitOne(new TimeSpan(0,0,SIMPLE_CONFIG.TIMEOUT));
if (!success)
{
return false;
}
client.EndConnect(result);
}
}
catch
{
return false;
}
return true;
}
如果端口已启动,它会立即返回true,但如果没有,它会冻结应用程序几秒钟,即使我设置超时1秒(这似乎不起作用)