UniSet  2.2.1
Открытые члены | Защищенные члены | Защищенные данные
Класс TCPCheck

#include <TCPCheck.h>

Полный список членов класса

Открытые члены

bool check (const std::string &_ip, int _port, timeout_t tout, timeout_t sleep_msec=50)
bool check (const std::string &iaddr, timeout_t tout, timeout_t sleep_msec=50)
bool ping (const std::string &_ip, timeout_t tout=1000, timeout_t sleep_msec=200, const std::string &ping_argc="-c 1 -w 0.1 -q -n")

Защищенные члены

void check_thread ()
void ping_thread ()
void setResult (bool s)

Защищенные данные

std::atomic_bool result = {false}
std::string ip = {""}
int port = {0}
int tout_msec
std::string ping_args = {"-c 1 -w 0.1 -q -n"}

Подробное описание

Вспомогательный класс для проверки связи, реализованный через создание потока, чтобы при проверке не было "зависания" при недоступности адреса. Смысл: создаётся поток, в нём происходит проверка, а в вызвавший поток приостанавливается на время timeout, по истечении которого созданный поток "принудительно"(в любом случае!) уничтожается..


Методы

bool TCPCheck::check ( const std::string &  _ip,
int  _port,
timeout_t  tout,
timeout_t  sleep_msec = 50 
)

Проверка связи с сервисом на определённом порту

Аргументы:
_ip- ip проверяемого узла
_port- порт для проверяемого узла
tout- таймаут на попытку
sleep_msec- пауза между проверками результата

Для проверки идёт попытка открыть соединение, но данные не посылаются, а соединение сразу закрывается.

Заметки:
Нужно быть уверенным, что сервис не зависнет от таких попыток "соединений"

Перекрестные ссылки PassiveTimer::checkTime() и msleep().

Используется в check().

bool TCPCheck::check ( const std::string &  iaddr,
timeout_t  tout,
timeout_t  sleep_msec = 50 
)
Аргументы:
iaddr- 'ip:port'

Перекрестные ссылки check() и UniSetTypes::uni_atoi().

bool TCPCheck::ping ( const std::string &  _ip,
timeout_t  tout = 1000,
timeout_t  sleep_msec = 200,
const std::string &  ping_argc = "-c 1 -w 0.1 -q -n" 
)

Проверка связи с узлом командой ping

Заметки:
Вызывается через system()! Это может быть опасно с точки зрения безопасности..
Необходимо сделать:
Возможно стоит написать свою реализацию ping

Перекрестные ссылки PassiveTimer::checkTime() и msleep().


Объявления и описания членов классов находятся в файлах: