怎么能将下面这个程序用servlet调用来启动呢??既应该怎么写这个servlet呢?小弟万分感谢了!!
import java.net.*;
import java.io.*;
//import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class TCPThread extends Thread
{
public static InetAddress hostAddress;
public static int MIN_port;
public static int MAX_port;
private int threadnum;
public TCPThread(String name,int threadnum)
{
super(name);
this.threadnum = threadnum;
}
public void run()
{
int i;
Socket theTCPsocket;
for (i = MIN_port+threadnum; i < MAX_port; i += Integer.parseInt(ThreadScan.maxThread.getText()))
{
ThreadScan.status.setText("扫描状态:正在扫描 "+i+" 端口");
try
{
theTCPsocket=new Socket(hostAddress,i);
theTCPsocket.close();
ThreadScan.Result.append(" "+i);
switch(i)
{
case 21:
ThreadScan.Result.append("(FTP)");
break;
case 23:
ThreadScan.Result.append("(TELNET)");
break;
case 25:
ThreadScan.Result.append("(SMTP)");
break;
case 80:
ThreadScan.Result.append("(HTTP)");
break;
case 110:
ThreadScan.Result.append("(POP)");
break;
case 139:
ThreadScan.Result.append("(netBIOS)");
break;
}
ThreadScan.Result.append(",");
}
catch (IOException e)
{}
}
if (i==MAX_port)
{
ThreadScan.Result.append("\n"+"扫描完成...");
ThreadScan.status.setText("扫描状态:完成!");
}
}
}class CancleAction implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
System.exit(1);
}
}class SubmitAction
{
public void actionPerformed()
{
int minPort;
int maxPort;
int maxThread;
try
{
minPort=Integer.parseInt(ThreadScan.minPort.getText());
maxPort=Integer.parseInt(ThreadScan.maxPort.getText());
maxThread=Integer.parseInt(ThreadScan.maxThread.getText());
}
catch(NumberFormatException e)
{
ThreadScan.DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
try
{
TCPThread.hostAddress=InetAddress.getByName(ThreadScan.hostname.getText());
}
catch(UnknownHostException e)
{
ThreadScan.DLGINFO.setText(" 错误的IP地址/域名或地址不可达! ");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
if(minPort<0 || minPort>65535 || minPort>maxPort)
{
ThreadScan.DLGINFO.setText("最小端口必须是0-65535并且小于最大端口的整数!");
return;
}
else TCPThread.MIN_port=minPort;
if(maxPort<0 || maxPort>65535 || maxPort<minPort)
{
ThreadScan.DLGINFO.setText("最大端口必须是0-65535并且大于最小端口的整数!");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
else TCPThread.MAX_port=maxPort;
if(maxThread<1 || maxThread>200)
{
ThreadScan.DLGINFO.setText(" 线程数为1-200的整数! ");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
ThreadScan.Result.setText("");
ThreadScan.Result.append("正在扫描 "+ThreadScan.hostname.getText()+" 线程数 "+ThreadScan.maxThread.getText()+"\n");
ThreadScan.Result.append("开放端口: ");
for(int i=0;i<maxThread;i++)
{
new TCPThread("T" + i,i).start();
}
}
}public class ThreadScan
{
public static JFrame main=new JFrame("基于JAVA的多线程TCP端口扫描程序");
public static JTextArea Result=new JTextArea("",4,43);
public static JTextField hostname=new JTextField("localhost",8);
public static JTextField minPort=new JTextField("0",4);
public static JTextField maxPort=new JTextField("1000",4);
public static JTextField maxThread=new JTextField("100",3);
public static Label DLGINFO=new Label("");
public static Label status=new Label("扫描状态:未开始");
public static void main(String[] args)
{
main.setSize(500,220);
main.setLocation(300,300);
main.setResizable(false);
Label H=new Label("ip或域名:");
Label P1=new Label("端口范围:");
Label P2=new Label("~");
Label TNUM=new Label("线程数:");
Label RST=new Label("扫描结果: ");
Label con=new Label(" ");
Result.setLineWrap(true);
Result.setEditable(false);
JButton Cancel = new JButton("取消");
Container mPanel = main.getContentPane();
mPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
mPanel.add(H);
mPanel.add(hostname);
mPanel.add(P1);
mPanel.add(minPort);
mPanel.add(P2);
mPanel.add(maxPort);
mPanel.add(TNUM);
mPanel.add(maxThread);
mPanel.add(RST);
mPanel.add(Result);
mPanel.add(con);
mPanel.add(Cancel);
mPanel.add(status);
main.setVisible(true);
Cancel.addActionListener(new CancleAction());
SubmitAction Sub = new SubmitAction();
Sub.actionPerformed ();
}
}
import java.net.*;
import java.io.*;
//import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class TCPThread extends Thread
{
public static InetAddress hostAddress;
public static int MIN_port;
public static int MAX_port;
private int threadnum;
public TCPThread(String name,int threadnum)
{
super(name);
this.threadnum = threadnum;
}
public void run()
{
int i;
Socket theTCPsocket;
for (i = MIN_port+threadnum; i < MAX_port; i += Integer.parseInt(ThreadScan.maxThread.getText()))
{
ThreadScan.status.setText("扫描状态:正在扫描 "+i+" 端口");
try
{
theTCPsocket=new Socket(hostAddress,i);
theTCPsocket.close();
ThreadScan.Result.append(" "+i);
switch(i)
{
case 21:
ThreadScan.Result.append("(FTP)");
break;
case 23:
ThreadScan.Result.append("(TELNET)");
break;
case 25:
ThreadScan.Result.append("(SMTP)");
break;
case 80:
ThreadScan.Result.append("(HTTP)");
break;
case 110:
ThreadScan.Result.append("(POP)");
break;
case 139:
ThreadScan.Result.append("(netBIOS)");
break;
}
ThreadScan.Result.append(",");
}
catch (IOException e)
{}
}
if (i==MAX_port)
{
ThreadScan.Result.append("\n"+"扫描完成...");
ThreadScan.status.setText("扫描状态:完成!");
}
}
}class CancleAction implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
System.exit(1);
}
}class SubmitAction
{
public void actionPerformed()
{
int minPort;
int maxPort;
int maxThread;
try
{
minPort=Integer.parseInt(ThreadScan.minPort.getText());
maxPort=Integer.parseInt(ThreadScan.maxPort.getText());
maxThread=Integer.parseInt(ThreadScan.maxThread.getText());
}
catch(NumberFormatException e)
{
ThreadScan.DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
try
{
TCPThread.hostAddress=InetAddress.getByName(ThreadScan.hostname.getText());
}
catch(UnknownHostException e)
{
ThreadScan.DLGINFO.setText(" 错误的IP地址/域名或地址不可达! ");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
if(minPort<0 || minPort>65535 || minPort>maxPort)
{
ThreadScan.DLGINFO.setText("最小端口必须是0-65535并且小于最大端口的整数!");
return;
}
else TCPThread.MIN_port=minPort;
if(maxPort<0 || maxPort>65535 || maxPort<minPort)
{
ThreadScan.DLGINFO.setText("最大端口必须是0-65535并且大于最小端口的整数!");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
else TCPThread.MAX_port=maxPort;
if(maxThread<1 || maxThread>200)
{
ThreadScan.DLGINFO.setText(" 线程数为1-200的整数! ");
ThreadScan.status.setText("扫描状态:未开始");
return;
}
ThreadScan.Result.setText("");
ThreadScan.Result.append("正在扫描 "+ThreadScan.hostname.getText()+" 线程数 "+ThreadScan.maxThread.getText()+"\n");
ThreadScan.Result.append("开放端口: ");
for(int i=0;i<maxThread;i++)
{
new TCPThread("T" + i,i).start();
}
}
}public class ThreadScan
{
public static JFrame main=new JFrame("基于JAVA的多线程TCP端口扫描程序");
public static JTextArea Result=new JTextArea("",4,43);
public static JTextField hostname=new JTextField("localhost",8);
public static JTextField minPort=new JTextField("0",4);
public static JTextField maxPort=new JTextField("1000",4);
public static JTextField maxThread=new JTextField("100",3);
public static Label DLGINFO=new Label("");
public static Label status=new Label("扫描状态:未开始");
public static void main(String[] args)
{
main.setSize(500,220);
main.setLocation(300,300);
main.setResizable(false);
Label H=new Label("ip或域名:");
Label P1=new Label("端口范围:");
Label P2=new Label("~");
Label TNUM=new Label("线程数:");
Label RST=new Label("扫描结果: ");
Label con=new Label(" ");
Result.setLineWrap(true);
Result.setEditable(false);
JButton Cancel = new JButton("取消");
Container mPanel = main.getContentPane();
mPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
mPanel.add(H);
mPanel.add(hostname);
mPanel.add(P1);
mPanel.add(minPort);
mPanel.add(P2);
mPanel.add(maxPort);
mPanel.add(TNUM);
mPanel.add(maxThread);
mPanel.add(RST);
mPanel.add(Result);
mPanel.add(con);
mPanel.add(Cancel);
mPanel.add(status);
main.setVisible(true);
Cancel.addActionListener(new CancleAction());
SubmitAction Sub = new SubmitAction();
Sub.actionPerformed ();
}
}
解决方案 »
- resin 不提供服务的问题
- MyEclipse 8.5开发JasperReports
- SSH中Hibernate连接MySQL数据库问题
- <jsp:forward page="details.jsp"/>报错
- 既然CSDN不理那么我天天顶,请新来的朋友注意
- 在DOS窗口下编译.java文件后提示的错误很长,DOS又不能分页显示错误......
- 实时和动态有什么区别?还有好多问题等你回答
- 这个错误是怎么引起的?该怎样解决?
- Web自动化测试方案
- 用jspsmartupload上传文件时,怎么防止重名文件?如:服务器上已经有a.jpg文件,如果另一客户端此时又上传一a.jpg文件,怎么防止后者覆盖前者?
- 今天开始学习jsp,请教一个如何让一个jsp文件运行起来的问题?
- 判别时间前后
在你的web.xml配置:
<servlet>
<servlet-name>TCPThread</servlet-name>
<servlet-class>TCPThread</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TCPThread</servlet-name> <url-pattern>/TCPThread</url-pattern>
</servlet-mapping>然后在浏览器中输入http://localhost:8080/yourapp/TCPThread
如果有问题你在联系我[email protected],我把我的例子发给你。
是不是应该先写一个servlet,在这个servlet里面在加上调用的语句呢?