Обновить

Пишем TCP-сканер портов на Go: goroutine, timeout и CSV-отчёт

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели12K
Всего голосов 6: ↑4 и ↓2+3
Комментарии4

Комментарии 4

sem := make(chan struct{}, maxConcurrency)

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

НЛО прилетело и опубликовало эту надпись здесь

Но лучше не заниматься этой порнографией и использовать готовые сканеры, самый известный из которых — nmap.

Да, есть готовые опенсорсные решения nmap, masscan (с которыми знаком почти каждый системный администратор) и другие.
Прежде чем разрабатывать новую программу необходимо ответить на вопрос, чем не подходят уже существующие ПО. Сейчас это выглядит как проект ради проекта, статья ради статьи.

Можно было использовать worker-pool, на счет готовых сканеров, мне просто было интересно самому что-то такое реализовать

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации