星期5晚上寫了的jsp實現掃描對方的端口...一開始測試比較麻煩~~因為要使用多線程就需要extends thread或者implemets runnable 也就是說需要一個類~~ 在jsp 里面寫一個類,不就是成員內部類咯!哎郁悶啊!之后寫完再測試~~ 又發現問題了!要是當前jsp的線程執行完了就會自動閉合out對象 然而我其他線程的out內容就會沒法輸入~~郁悶ing... 后來想了一個 沒辦法中的辦法!就是在當前線程睡覺一會thread.sleep() 廢話少說了~~下面給出代碼!
//掃描port函數
void scanport(javax.servlet.jsp.jspwriter out,string straddress,int startport,int endport)throws exception{
if(endport<startport||startport<=0||startport>65535||endport>65535||endport<=0){
out.print("port setup error");
return;
}
inetaddress ia=inetaddress.getbyname(straddress);
for(int p=startport;p<=endport;p+=15){
(new scanport(ia,p,p+14,out)).start();
}
thread.sleep((int)(endport/startport)*5000);
}//掃描類
class scanport extends thread{
int startport;
int endport;
inetaddress address;
javax.servlet.jsp.jspwriter out;
public scanport(inetaddress address,int startport,int endport,javax.servlet.jsp.jspwriter out){
this.address=address;
this.startport=startport;
this.endport=endport;
this.out=out;
}
public void run(){
socket s=null;
for(int port=startport;port<=endport;port++){
try{
s=new socket(address,port);
out.println("port "+port+" is open<br>");
}
catch(ioexception e){
}finally{
try{s.close();}catch(exception e){}
}
}
}
}
新聞熱點
疑難解答