Simple Port Scanner application using Java
By: Syed M Hussain
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
Archived Comments
1. iam getting array index of of bound exception . can u pls give me a solution
View Tutorial By: janaki at 2016-02-10 12:24:17
2. Try this
import java.net.*;
public class PortScanner
{<
View Tutorial By: Asad at 2014-02-13 05:55:26
3. Try this
import java.net.*;
public class PortScanner
{<
View Tutorial By: Asad at 2014-02-13 05:55:09
4. Error...!!
please send correct java code for port scanning,completing project for 7th sem
View Tutorial By: mayuri at 2013-10-20 13:26:30
5. If you want, which programm is running on port (on Windows OS), you can use commands "netstat -
View Tutorial By: Frantisek at 2012-05-07 07:31:20
6. If you want, which programm is running on port (on Windows OS), you can use commands "netstat -
View Tutorial By: Frantisek at 2012-05-07 07:30:41
7. @ parul : check whether your are passing class file to the compiler for e.g. javac PortScanner
View Tutorial By: heramb at 2012-03-28 07:15:21
8. i have a error while i running this program
error is :class name,'PortScanner' , are only ac
View Tutorial By: parul at 2012-02-08 15:40:09
9. Small modification.
System.out.println("Port not in use: " + i ); should be INSIDE
View Tutorial By: Rohit at 2012-02-07 16:22:52
10. when i am trying to compile your program one error is shown:exception in thread "main" jav
View Tutorial By: anindya at 2011-11-23 03:00:49
11. Hai all, there is som question plzzzz help me
before that, im not so talented with java...<
View Tutorial By: chandra at 2011-10-12 09:07:39
12. Your code is syntactically correct, but semantically wrong.
You have to put the output state
View Tutorial By: mobinga at 2011-07-25 15:08:27
13. Sir,
i am developing a port scanner in java as a my mca-project.
So please provide me
View Tutorial By: richhpal at 2010-11-13 10:16:05
14. is there any port filter/block api for java?
View Tutorial By: edwin at 2010-08-12 03:16:44
15. Hi, thanks for your code, I have modified a little bit to scan a single port in different ip address
View Tutorial By: Armando at 2010-08-10 09:34:35
16. Hello, I have executed the above code and it works but there is one problem with the code the port w
View Tutorial By: Sana at 2010-02-01 03:50:18
17. Hello, I have executed the above code and it works but there is one problem with the code the port w
View Tutorial By: Sana at 2010-02-01 03:49:44
18. You have to run the compiled PortScanner with two arguments
java PortScanner 130 140
f
View Tutorial By: KRook at 2009-10-15 04:11:53
19. Sorry dude! when i am trying to compile your program one error is shown:exception in thread "ma
View Tutorial By: Avijit M. at 2007-09-14 00:43:55
Comment on this tutorial
- Data Science
- Android
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
categories
Related Tutorials
Program using concept of byte long short and int in java
Update contents of a file within a jar file
Tomcat and httpd configured in port 8080 and 80
Count number of vowels, consonants and digits in a String in Java
Student marks calculation program in Java
Calculate gross salary in Java
Calculate average sale of the week in Java
Vector in Java - Sample Program
MultiLevel Inheritance sample in Java