>>>>> "ed" <[EMAIL PROTECTED]> (E) wrote: > import socket > import threading > import traceback
> def scan(ip, thebegin, theend): > global ip > global thebegin > global theend Making parameters global is a bad idea (I think). Moreover, thebegin and theend aren't used in scanThread. And port_counter still isn't passed. Better give all required data as parameters to the scanThread constructor. Something like: class scanThread(threading.Thread): def __init__(self, ip, port): self.ip, self.port = ip, port def run(self): ... use self.ip and self.port instead of ip and port_counter > port_counter = 0 > for port_counter in range(thebegin, theend): > scanThread().start() scanThread(ip, port_number).start() > # end function ------------------- > scan("localhost", 0, 10000) Now you're starting 10000 threads at the same time. Your OS probably won't like that. Use a ThreadPool instead. Or divide the IP range into a number of blocks, start a fixed number of threads, and give each thread a block of IP numbers. The latter approach would be simpler IMO. You may also have to take into account if your OS allows a maximum number of open sockets for a process. -- Piet van Oostrum <[EMAIL PROTECTED]> URL: http://www.cs.uu.nl/~piet [PGP 8DAE142BE17999C4] Private email: [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list