Доброе утро!
Имеется задание на курсовой:
Сканер открытых TCP портов.
Сканирует порты в заданном диапазоне (от и до), пытаясь установить соединение с каждым из них.
Ответ ожидается в течение заданного интервала, чтобы исключить резкое замедление сканирования из-за возможного блокирования.
В результате для каждого сканированного порта должен быть выведен один из трех возможных результатов: open, closed, blocked.
Использовать перевод сокета в неблокирующий режим и функцию select() для ожидания готовности сокета или ошибки в течение заданного интервала времени.
Пример вызова программы:

./scan_ports.py 127.0.0.1 20 25 0.8
20: closed
21: closed
22: open
23: closed
24: closed
25: blocked

Я новичок в python, написал без использования select-a:
#!/usr/bin/env python
# -*- coding: utf_8 -*-

import socket
import sys

HOST = sys.argv
nach = int(sys.argv)
kon = int(sys.argv)

for port in range (nach, kon+1):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setblocking(0)
b = sys.argv
sock.settimeout(float(b))
try:
sock.connect((HOST, port))
except socket.timeout:
print (“%s blocked” % port)
except:
print (“%s closed” % port)
else:
print (“%s open” % port)
sock.close()

Все примеры, которые находил (в сети и в учебниках) описывают работу серверного приложения с использованием select (ожидание подключения клиентов и взаимодействия с ними). Также, встречались примеры с использованием select-a на клиентской стороне - но во всех таких примерах connect происходит до использования select-a (для моей задачи это не подходит). Прошу помощи или хотя бы намеков, как сюда прикрутить select. Спасибо!