import java.net.*;
import java.io.*;
import java.util.*;
public class Test {

        public static void main(String[] args){
ArrayList result = new ArrayList();
String ip = null;
ip = args[0];  
int startPort = Integer.parseInt(args[1]);  
int endPort = Integer.parseInt(args[2]); 
//获得终止端口号,同上
if(startPort<1||startPort>65535||endPort<1||endPort>65535){ 
System.out.printf("端口范围必须在1~65535以内!"); 
return; 
}else if(startPort>endPort){ //比较起始端口和终止端口 
System.out.println("端口输入有误! 起始端口必须小于终止端口"); 
return; 


try{ 
 InetAddress.getByName( ip); 
}catch(UnknownHostException e){ 
System.out.println("无法找到 "+ ip); 
return; 

for(int nport=startPort;nport<=endPort;nport++){         
try{ 
System.out.print("Scanning "+nport);    
Socket s=new Socket(InetAddress.getByName( ip),nport);     
s.close();        //关闭连接 
result.add(""+nport); 
System.out.println(" : open"); //打印状态 
}catch(IOException e){ 
System.out.println(":close"); //打印状态 

}  System.out.println("打印连接成功端口如下:");
System.out.println("主机:"+ip+"    主机名:+localhost");
System.out.print("端口       状态");
System.out.println("");
ListIterator li = result.listIterator(); 
while(li.hasNext()){ //如果li里面有元素 
System.out.println(li.next().toString()+"       Open");         
} }
}java端口扫描器