Simple Port Scanner application using Java

By: Syed M Hussain Viewed: 160478 times  Printer Friendly Format    


In this article I will explain how to develop a simple port scanner which you can use to scan a host for open ports. A port scanner is a software tool used by network administrators to scan a host network for open ports. This allows the administrator to check their network security.

There are in total 65,535 ports but not every port is used. Below is a few known ports:


Port 20: FTP | Data port
Port 21: FTP | Control (Command) port
Port 23: Telnet | Unencrypted text communications
Port 25: SMTP | Used for e-mail routing between mailservers
Port 80: HTTP | HyperText Transfer Protocol


Above is just a few known ports but there are more and by developing a simple console application in Java we can scan the localhost for any open ports. First lets have a look at the package we need to import into our code.

java.net
The java.net package provides the Classes needed for implementing network applications. One of the Classes is the Socket Class, which implements client sockets. We will use this Class to connect to the localhost and scan through a range of ports.

Now let\'s get started. The port scanner that we will develop will take two command line arguments. The first argument is the start port, this is the port we want to start scanning from. The second argument is the stop port. We will use a For loop to loop through the start and stop ports, each time we increment the loop, we will establish a connection with the localhost and use the incremented loop counter as the port number.

Listing 1.1 below is the complete code of the port scanner with line numbers. Remove the line numbers and save the code as PortScanner.java


1. import java.net.*;

2. public class PortScanner

{

3.        public static void main(String args[])
       {
4.        int startPortRange=0;
5.        int stopPortRange=0;

6.        startPortRange = Integer.parseInt(args[0]);
7.        stopPortRange = Integer.parseInt(args[1]);



8.        for(int i=startPortRange; i <=stopPortRange; i++)
       {
9.                        try
                       {
10.                        Socket ServerSok = new Socket("127.0.0.1",i);

11.                 System.out.println("Port in use: " + i );

12.                        ServerSok.close();
                       }
13.                catch (Exception e)
                       {
                       }
14.        System.out.println("Port not in use: " + i );
       }
       }
}


Explanation Of The Code
Now I'm going to explain the code. First on line 4 and 5 I have declared a start and stop variable to hold the start and stop port numbers. Line 6 and 7 simply converts a string number into an integer number using the parseInt() method.

On line 8 we have a For loop, this loop uses the startPortRange variable to initialize the For loop. The loop increments until it reaches the stopPortRange. On line 9 we have a Try block, each time the For loop increments the Try block gets invoked.

The Try block creates an instance of the Socket Class. In the constructor of the Socket instance Class, we supply the hostname or IP address and the port number. The following code on line 10 creates an instance of the Socket Class with the localhost IP address. The variable "i" is the current port number.


Socket ServerSok = new Socket("127.0.0.1",i);


If a connection is made on the localhost with the current port number the Try block will print a "Port in use" message. If a connection could not be made on the localhost with the current port number, then "Port not in use" message will be printed to the console. On line 12 we close the Socket connection using the close() method.

We are now at the end of this article. I have very briefly introduced you to the java.net package and the Socket class. Author's url: http://www.cy2online.net



Most Viewed Articles (in Java )

Latest Articles (in Java)

Comment on this tutorial

Subscribe to Tutorials

Related Tutorials

Archived Comments

1. Sorry dude! when i am trying to compile your progr
View Tutorial          By: Avijit M. at 2007-09-14 00:43:55

2. You have to run the compiled PortScanner with two
View Tutorial          By: KRook at 2009-10-15 04:11:53

3. Hello, I have executed the above code and it works
View Tutorial          By: Sana at 2010-02-01 03:49:44

4. Hello, I have executed the above code and it works
View Tutorial          By: Sana at 2010-02-01 03:50:18

5. Hi, thanks for your code, I have modified a little
View Tutorial          By: Armando at 2010-08-10 09:34:35

6. is there any port filter/block api for java?
View Tutorial          By: edwin at 2010-08-12 03:16:44

7. Sir,
i am developing a port scanner in java

View Tutorial          By: richhpal at 2010-11-13 10:16:05

8. Your code is syntactically correct, but semantical
View Tutorial          By: mobinga at 2011-07-25 15:08:27

9. Hai all, there is som question plzzzz help me
View Tutorial          By: chandra at 2011-10-12 09:07:39

10. when i am trying to compile your program one error
View Tutorial          By: anindya at 2011-11-23 03:00:49

11. Small modification.
System.out.println(&qu

View Tutorial          By: Rohit at 2012-02-07 16:22:52

12. i have a error while i running this program

View Tutorial          By: parul at 2012-02-08 15:40:09

13. @ parul : check whether your are passing class fil
View Tutorial          By: heramb at 2012-03-28 07:15:21

14. If you want, which programm is running on port (on
View Tutorial          By: Frantisek at 2012-05-07 07:30:41

15. If you want, which programm is running on port (on
View Tutorial          By: Frantisek at 2012-05-07 07:31:20

16. Error...!!
please send correct java code fo

View Tutorial          By: mayuri at 2013-10-20 13:26:30

17. Try this

import java.net.*;

View Tutorial          By: Asad at 2014-02-13 05:55:09

18. Try this

import java.net.*;

View Tutorial          By: Asad at 2014-02-13 05:55:26

19. iam getting array index of of bound exception . ca
View Tutorial          By: janaki at 2016-02-10 12:24:17