【发布时间】:2019-09-22 07:50:16
【问题描述】:
我正在尝试创建一个函数来测试与 server:port 的连接,它将尝试每 100 毫秒连接到该 server:port 并返回 TRUE 如果连接成功则返回 FALSE 直到达到时间限制。 我的功能如下:
private static bool _TryPing(string strIpAddress, int intPort, int nTimeoutMsec)
{
Socket socket = null;
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, false);
IAsyncResult result = socket.BeginConnect(strIpAddress, intPort, null, null);
bool success = result.AsyncWaitHandle.WaitOne(nTimeoutMsec, true);
return socket.Connected;
}
catch
{
return false;
}
finally
{
if (null != socket)
socket.Close();
}
}
问题是我正在使用另一个软件来制作本地服务器:端口,并且需要随机 10-20 秒才能完成新端口的设置。但是上面的函数会在应用程序启动时检查,所以它会立即返回 false 而无需等待,因为 port 尚未打开。
_TryPing("127.0.0.1", 1080, 20000) //Return FALSE
谁能帮我修复这段代码。谢谢
【问题讨论】: