| Language: | C |
| Category: | Net and Internet |
| Subcategory: | |
| Date: | 2008-07-23 |
| Downloads: | 0 |
| Size: | 57 kb |
| Author: | Михаил Фленов |
| Requirements: | |
| Limitations: |
Это быстрый, но простой в использования сканер портов. Он не использует потоков для повышения производительности, а использует только возможности сокетов.
Потоки – это очень мощная и удобная вещь, позволяющая создать многозадачность даже внутри отдельного приложения. Но у них есть один очень большой недостаток – программисты, познакомившись с потоками, начинают использовать их везде, где это надо и не надо.
Я видел много сканеров, которые используют по 20-50 потоков для одновременного сканирования большого количества портов. Я понимаю, что пример, который мы рассмотрели в главе 4, был очень медленным и его надо ускорять, но не такими же методами. Попробуйте на досуге реализовать сканирование с помощью потоков. Вы увидите, что это не так уж и просто. Ну и, конечно же, вы уже знаете, что потоки излишне нагружают систему.
Сейчас нам предстоит увидеть, как можно реализовать быстрое сканирование портов без использования потоков. А как же тогда? Конечно же, с помощью асинхронной работы с сетью. Мы можем создать несколько асинхронных сокетов и запустить ожидание соединения. Потом собрать все сокеты в набор fd_set и выполнить функцию select в ожидании события соединения с сервером. По завершении её выполнения необходимо проверить все сокеты на удачное соединение и вывести результат.
Download Fast port scanner 2.0