利用线程池技术实现端口扫描(TCP)

文章作者 100test 发表时间 2007:10:10 11:38:16
来源 100Test.Com百考试题网


一个简单的利用线程池技术实现端口扫描(TCP)的小程序,新手可以多学习下。

关键代码如下:

// 扫描本机
private void getLocal()
{
String ip = getIP().
String portStart = txPortStart1.getText().trim().
String portEnd = txPortEnd1.getText().trim().

if (portStart.length() == 0 || portEnd.length() == 0)
return.

int s = 0.
int e = 0.

try {
s = Integer.valueOf(portStart).
e = Integer.valueOf(portEnd).
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "端口输入有误").
return.
}

// 检查端口是否超出范围
if (! (checkPort(s) &.&. checkPort(e)))
{
JOptionPane.showMessageDialog(null, "端口应该大于0而小于65535").
return.
}


scann(ip, s, e).

runThread(). // 启动线程, 监视扫描是否已完成
}

private String getIP()
{
try {
InetAddress addr = InetAddress.getLocalHost().
return addr.getHostAddress().toString(). // ip
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "获取IP出错!").
}
return null.
}

// 扫描单个IP
private void scann(String ip, int startPort, int endPort)
{
// 将所有按钮设为不可用
setBtnEdit(false).
status.setText("请稍候...").

String[] add = {ip, ""}.
table.addRow(add).
exec = Executors.newFixedThreadPool(10).
for (int i = startPort. i <= endPort. i )
exec.execute(new RunSocket(ip, i)).
exec.shutdown().

}



相关文章


教你把Java程序作成exe文件
教你在ecli e中使用Ant执行JUnit
获取ChoiceGroup多选状态下的值
利用线程池技术实现端口扫描(TCP)
Taglib的打包部署和使用方式详解
将控制台重定向到GUI组件上
配置struts2, ring2,hibernane3方法
为UML模型添加颜色的实现方法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛