NAPS - Not Another Port Scanner


NAPS is a program that was developed as part of my final year of computer science at McMaster University. Our faculty advisor was also our "client" for this project and the requirements he gave us were very simple. Essentially, he had several computers hooked up in a network to be used as a compiler farm and he wanted to monitor them by pinging them. If a machine didn't respond to an ICMP ping, then it should be deemed "down" and reported. Being rather ambitios students, we added some of our own additional requirements (approved by the client) to make for ease of use and further functionality. In short, we wanted the program to be OS independent, have a good HCI (Human-Computer Interface), and be able to request SNMP info. The result of this project was a Java program with a nice clean responsive interface that informs the user in a visual way as to the status of the computers being monitored.


main window of NAPS showing the 4 main icons detailed view of the machine with SNMP active MIB browser currently looking at a machine's description

User Manual

MIB browser currently looking at a machine's description

I created a full user manual for NAPS as we wanted the program to be easily used by just about everyone. The manual is in PDF format, so you'll need a copy of Acrobat Reader in order to view it. If you have Acrobat, then you can view it by clicking on the manual cover. The entire PDF is 1MB as it was designed primarily for printing and not web distribution.

Source Code Documentation (aka JavaDocs)

I believe it was one of the course requirements to have consistent comments through out the source code. Even if this wasn't a course requirement, I'm glad we did it because it helped enormously with inter-group communication. I think it was especially useful because we made full use of the JavaDoc feature of Sun's Java. You can view the JavaDocs of the NAPS code, too. For those not familiar with JavaDocs, it is essentially a program that takes specially formatted comments from within the program code and parses it into a nice, easy to read format.


If you're like me, I usually jump right to this part of the page and just try the program out. The program is packaged as a JAR file, so if you have Java installed properly, you should be able to run it by just double-clicking it. If you haven't installed Java yet, you can get it at

NAPS executable JAR file

Source Code

There were several last minute changes made to the program, so I'm not entirely sure if the last version of the code I downloaded from the CVS repository was the final code used in the JAR file. However, any differences are likely minor ones if any.

NAPS Java source code

Final Report and Academic Paper

Our final report came to just under 100 pages, so I imagine not many will actually look to closely at it. The report contains information on all aspects of the development including: requirements analysis, high-level design, implementation, verification/testing, and overall assesment of the project's success. The report is also in PDF format with the graphics downsampled and contains a clickable table of contents for easy navigation. The report can also be found in a hard copy in one of the McMaster libraries as it has also been published. (only the top three projects were chosen to be published) The paper's title is "Proper Human Computer Interfacing to Multicomputer Remote Monitoring via ICMP and SNMP" and all the contributors are listed on the front cover.

I feel a need to add a link to this wonderful program because it was so amazing to work with. The program is a little sluggish when loading because it's entirely in Java, but all the wonderful functionality and OS independence makes up for it. There is also a rather rough learning curve as there are SOOOOO many features. Once you get the hang of the program, though, you'll likely never use anything else. The best part is the fact that it integrates JavaDocs into the environment so you can get help on method calls (ones in the Java API and ones you wrote yourself!). It's a must-have if you develop Java on more than one OS because the look-and-feel remains the same between them all. It even has some nice features for interfacing with CVS.
Computing and Software department at McMaster University
This is a link to the main faculty webpage. Essentially, the department consists of the Computer Science faculty and the Software Engineering Faculty.