Einen Paketsniffer kannst du nicht so weiteres plattformunabhängig umsetzen, da du dafür direkten Zugriff auf das Netzwerk-Device bräuchtest, und das von Betriebssystem zu Betriebssystem unterschiedlich ist und die JVM keine API dafür anbietet.
Du brauchst also native Funktionen oder Bibliotheken, über die du auf das Netzwerk-Device zugreifen kannst. Eine Möglichkeit wäre, dass du die libpcap/winpcap nutzt. Das ist eine Bibliothek die es für fast alle gängigen Betriebssysteme gibt (http://www.tcpdump.org bzw http://www.winpcap.org).
Es gibt bereits eine Java-Bibliothek die die libpcap-Funktionen nutzen kann, nämlich jpcap:
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/inde…
Damit kannst du auf allen Plattformen auf denen es libpcap gibt z.B. Pakete mitsniffen.
Damit dein Programm dann funktioniert, muss dann nur noch libpcap/winpcap auf dem jeweiligen Rechner installiert sein. Unter den meisten Betriebssystemen sind außerdem Administrator- bzw. root-Rechte nötig, um libpcap/winpcap nutzen zu können.
Du könntest aber einen einfachen Port-Scanner schreiben, der einen TCP-Syn Scan macht. Das kannst du komplett in Java ohne Fremdbibliotheken erledigen. Du musst nur zu den Ports die du scannen willst eine TCP-Verbindung aufbauen (Siehe Klassen in java.net.*) und wenn diese zustande kommt ist der Port offen. Schlägt die Verbindung fehl ist der Port entweder geschlossen oder wird von einer Firewall gefiltert.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]