R0 CREW

Посмотрите исходник портсканера

Для одного своего проекта соорудил примитивный портсканер . Он вроде бы работает , но как-то нестабильно .
Принцип скана самый простой . В потоках вызывается
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

ioctlsocket(sock, FIONBIO, &mode)

connect(sock, (SOCKADDR *)&si, sizeof(si))
и дальше проверка состояния сокета через FD_ISSET в цикле .
Скан диапазона может быть инкрементируемый , а может быть рандомный . Во втором случае адреса берутся из вектора , где мешаются random_shuffle .
Запускается с ключами -f inputfile.txt и -o output.txt .
В inputfile.txt должны быть диапазоны в виде
192.168.1.0-192.168.1.255:port (без пробелов)
Число потоков , тип скана и таймаут соединения задается в исходнике .

Проблема в том что иногда , при проверке на уже известных адресах , находит только половину или вообще ничего . А иногда все нормально . :frowning:
Поэтому терзают смутные сомнения , что я где-то что-то пропустил .
Еще дико доставляет мой пров который через 5-10 мин скана отключает интернет . Прова похоже придется менять .

В общем буду рад если кто-нибудь найдет время посмотреть исходник .

Таймаут, думается, лучше выбирать динамически для каждого хоста. Не исключаю так же, что есть вероятность временного проседания канала со стороны прова, либо со стороны сканируемого хоста.