Я пытаюсь создать функцию для проверки соединения с сервером: порт, он будет пытаться подключиться к этому серверу: порт каждые 100 мс и возвращать ИСТИНА , если соединение установлено успешно, либо вернуть ЛОЖЬ пока не будет достигнут срок.У меня есть функция, показанная ниже:
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 без времени ожидания, поскольку порт еще не открыт.
_TryPing("127.0.0.1", 1080, 20000) //Return FALSE
Может кто-нибудь помочь мне исправить этот код.Спасибо