下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何利用Java线程池技术实现TCP端口扫描

作者:课课家教育     来源: http://www.kokojia.com点击数:1126发布时间: 2016-02-29 11:48:51

标签: Java程序Java

大神带你学编程,欢迎选课

如何利用Java线程池技术实现TCP端口扫描

一个简单的利用线程池技术实现端口扫描(TCP)的java程序:

  关键代码如下:

  // 扫描本机

  private void gocal()

  {

  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 {

  IAddress addr = IAddress.gocalHost();

  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();

  }

赞(12)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程