Tcp Ping или проверка доступности удаленного сервиса
Понадобилось мне недавно какая-нибудь утилита, для проверки доступности удаленного сервера. Вроде все просто, запусти ping и все, но оказалось не так просто, на удаленной машине отключен ответ на ICMP запросы.
Немного поискав в сети понял, что мне нужен tcpping, но ничего подходящего не нашлось. Решил писать сам, в качестве среды разработки выбран MS Visual Studio 2010 Express.
Требования к проекту были простые:
Пока она только возвращает состояние подключения, но сейчас работаю над определением времени подключения, по типу времени обычного ping.
Весь код и само приложение можно взять тут.
Немного поискав в сети понял, что мне нужен tcpping, но ничего подходящего не нашлось. Решил писать сам, в качестве среды разработки выбран MS Visual Studio 2010 Express.
Требования к проекту были простые:
- Ведение статистики доступности удаленного сервера
- обычный ping
- TcpPing — по указанному порту
- Параллельный мониторинг нескольких серверов
- Небольшая визуализация текущего состояния
private int pingtcp(string server) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); bool ConState = true; sock.LingerState = new LingerOption(true, 2); sock.NoDelay = true; char[] delimiterChars = { ':' }; string[] srv = server.Split(delimiterChars); try { sock.Connect(srv[0], int.Parse(srv[1])); } catch (SocketException ex) { ConState = false; } catch (Exception ex) { ConState = false; } finally { if (sock.Connected) { sock.Close(); ConState = true; } else { ConState = false; } } if (ConState == true) { Thread.Sleep(250); return 1; } else { return -1; } }
Пока она только возвращает состояние подключения, но сейчас работаю над определением времени подключения, по типу времени обычного ping.
Весь код и само приложение можно взять тут.
0 комментариев