Forum Webscript.Ru

Программирование => Perl => Тема начата: okoks от 14 Апреля 2007, 09:01:14

Название: скан на открытый порт и время жизни сокета
Отправлено: okoks от 14 Апреля 2007, 09:01:14
задача такая

есть 20 шт IP адресов
нужно проверить как можно БЫСТРО открыт ли на них 21 порт/FTP

имеется Active Perl 5.8.8

проблема:

при закрытом порте соединение сокета повисает (1-8 сек на 1 IP в зависимости от реализации скрипта)
при открытом порте обработка занимает доли секунды

20 закрытых IP = обработка 20 сек = это ОЧЕНЬ долго

как задать вручную время жизни соединения сокета?

пробовал команду Timeout => 10, а  также Timeout => .1
результат 1 и тот же

Оказалось, что Таймаут не работает, так как его обработка закомментирована в модуле IO::SOcket:Inet.pm

почему он закомментирован и как сделать, чтобы он работал,
 в инете ничего толкового не нашел

// снятие "#" в модуле ничего не дает

почему то все советуют делать это, через IO::Select

Отключение алгоритма буферизации
обработка через alarm
обработка через IO::Select

ничего не привело к желаемому

Прошу высказать Ваши мнения...