>>>>> "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