We are on track for some vital components of the scanner.
We have added threaded pinging for machine constructors for multiples machines so we don't waist bandwidth with tcp connection attempts for offline machines.
Within the global environment we can create a container of multiple machines that are subject to a threaded system call to ping the target before being constructed -- the multi-machine constructor only constructs an individual machine object after it has received a ICMP response that verifies that machine is online.
If a user creates an individual machine object we do not ping it.
TCP-connects successfully thread, handle exceptions, and modify object state data to reflect the state of the target machine.
Here is example outputs against my local subnet. We see active ports on the router and we see the other two hosts are firewall.
> (define z (ips->machines "192.168.1.1-7" "1-1024" "t"))
> (all-tports)
IP:
192.168.1.5
Open ports:
()
IP:
192.168.1.1
Open ports:
(23 443 53 548 80)
IP:
192.168.1.2
Open ports:
()
> (define single-machine (machine "192.168.1.1" "1-2048" "t"))
> (single-machine '(tports))
'(53 443 23 548 80)
> (define google-dns (machine "8.8.8.8" "53" "t"))
> (google-dns '(tports))
'(53)