您的位置:首页 > 其它

一个简单的端口扫描程序

2006-02-09 11:41 507 查看
有天无聊,用java写了一个简单的端口扫描程序,可以扫描到一个主机上哪些端口被绑定服务。

src code:

/*
* Created on 2005-12-20
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.java2ee.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* @author islandhill
*
* 该例实现了一个端口扫描器,通过建立socket连接来检测主机上已经绑定的服务和端口。
* 如果对于未绑定服务的端口,会有IOEXCEPTION的异常,因此不会打印。
*/
public class PortScanner {

private static String hostName;
private static int startPort; //开始端口
private static int endPort; //结束端口。
static
{
hostName="localhost";
startPort=0;
endPort=100;
}

public static void main(String[] args) {
System.out.println("pls input following the format:hostname,startPort,endPort");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String line=null;
String[] lineArray=new String[3];
try
{
if((line=reader.readLine())!=null)
{
lineArray=line.split(",");
hostName=lineArray[0];
startPort=Integer.parseInt(lineArray[1]);
endPort=Integer.parseInt(lineArray[2]);
scanPort();
}
}catch(Exception e)
{
System.out.println("An exception has occoured");
}

}

public static void scanPort()
{
try
{
InetAddress Iaddr=InetAddress.getByName(hostName);
System.out.println("********Start of Port scanning**********");
for(int i=startPort;i<=endPort;i++)
{
try
{
//定义socket对象。
Socket socket=new Socket(Iaddr,i);
System.out.println("There is a server on port:"+i+" of host "+hostName);
}catch(IOException e)
{
// e.printStackTrace();
}
}
System.out.println("********End of Port scanning**********");

}catch(UnknownHostException e)
{
System.out.println("Host not found");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: