A simple implementation of scanning algorithm, with swing GUI. Uses multithreading concepts like java ExecutorService with highly customizable scanning parameters. Able to show detailed scan results after scan ends and real-time results while scanning is in process already.