package pscan;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.Socket;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class example implements ActionListener {
/**
* @param args
*/
static JFrame frame = new JFrame();
static JButton bt = new JButton();
static JButton bt1 = new JButton();
static JButton bt2 = new JButton();
static JPanel panelcenter = new JPanel();
static JPanel paneltop = new JPanel();
static JPanel panelleft = new JPanel();
static JLabel label1 = new JLabel("pressed");
static JLabel label2 = new JLabel("pressed too");
static JPanel panel2 = new JPanel();
static JPanel panel3 = new JPanel();
static JPanel contentpane = new JPanel();
static JPanel contentpane2 = new JPanel();
static BorderLayout bLayout = new BorderLayout();
static JPanel paneltophelp = new JPanel();
static Container cont = new Container();
private String isopen = "";
private String sortedisopen = "";
private Object lock = new Object();
private static JProgressBar progressBar = new JProgressBar();
private int ports = 1;
private int done = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
paneltop.setLayout(new GridLayout(2, 1));
frame.setLayout(bLayout);
bt.setText("Show");
bt1.setText("Start Scan");
panel2.add(label1);
panel3.add(label2);
paneltophelp.add(bt);
paneltophelp.add(bt1);
paneltop.add(paneltophelp);
paneltop.add(progressBar);
progressBar.setMinimum(1);
progressBar.setStringPainted(true);
cont.add(panel2);
panelleft.setBackground(Color.RED);
panelcenter.setBackground(Color.BLUE);
frame.add(paneltop, BorderLayout.NORTH);
frame.add(panelleft, BorderLayout.WEST);
frame.add(panelcenter, BorderLayout.CENTER);
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bt.addActionListener(new example());
bt1.addActionListener(new example());
bt2.addActionListener(new example());
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == bt) {
frame.remove(bLayout.getLayoutComponent(BorderLayout.CENTER));
frame.add(new JScrollPane(new JTextArea(this.sortedisopen)),
BorderLayout.CENTER);
frame.revalidate();
frame.repaint();
} else if (e.getSource() == bt1) {
this.isopen = "";
this.sortedisopen = "";
this.ports = 1;
this.done = 0;
this.scan("127.0.0.1", 1, 25);
}
}
public void scan(String ad, int start, int end) {
this.ports = end - start;
progressBar.setMaximum(this.ports);
for (int i = start; i <= end; i++) {
new threaderw(this, ad, i).start();
}
}
public synchronized void write(String help) {
synchronized (this.lock) {
this.isopen = this.isopen + help + "\n";
this.sortedisopen = this.sorter();
this.done++;
}
this.progressBar.setValue(done);
frame.remove(bLayout.getLayoutComponent(BorderLayout.CENTER));
frame.add(new JScrollPane(new JTextArea(this.sortedisopen)),
BorderLayout.CENTER);
frame.revalidate();
frame.repaint();
}
public String sorter() {
List<String> sorter = new LinkedList<String>();
StringTokenizer str = new StringTokenizer(this.isopen, "\n");
String finalreturn = "";
while (str.hasMoreTokens())
sorter.add(str.nextToken());
List<Integer> sorted = new LinkedList<Integer>();
for (String h : sorter)
try {
sorted.add(Integer.parseInt(h.substring(5, 10)));
} catch (Exception e1) {
try {
sorted.add(Integer.parseInt(h.substring(5, 9)));
} catch (Exception e) {
try {
sorted.add(Integer.parseInt(h.substring(5, 8)));
} catch (Exception e2) {
try {
sorted.add(Integer.parseInt(h.substring(5, 7)));
} catch (Exception e3) {
sorted.add(Integer.parseInt(h.substring(5, 6)));
}
}
}
}
Collections.sort(sorted);
for (Integer in : sorted) {
for (int i = 0; i < sorter.size(); i++) {
try {
if (in == Integer.parseInt(sorter.get(i).substring(5, 10)))
finalreturn = finalreturn + sorter.get(i) + "\n";
} catch (Exception e) {
try {
if (in == Integer.parseInt(sorter.get(i)
.substring(5, 9)))
finalreturn = finalreturn + sorter.get(i) + "\n";
} catch (Exception e4) {
try {
if (in == Integer.parseInt(sorter.get(i).substring(
5, 8)))
finalreturn = finalreturn + sorter.get(i)
+ "\n";
} catch (Exception e2) {
try {
if (in == Integer.parseInt(sorter.get(i)
.substring(5, 7)))
finalreturn = finalreturn + sorter.get(i)
+ "\n";
} catch (Exception e3) {
if (in == Integer.parseInt(sorter.get(i)
.substring(5, 6)))
finalreturn = finalreturn + sorter.get(i)
+ "\n";
}
}
}
}
}
}
return finalreturn;
}
}
class threaderw extends Thread {
private example writeback;
private String ip;
private int port;
public threaderw(example back, String ad, int i) {
this.writeback = back;
this.ip = ad;
this.port = i;
}
public void run() {
try {
Socket socket = new Socket(ip, port);
writeback.write("Port " + port + " is open");
} catch (Exception e) {
writeback.write("Port " + port + " is closed");
}
}
}