java编写一个端口扫描器
2016-03-13 16:02
633 查看
好久没写java了,学的时候,也没学习网络编程这一块,无意中看到了一本书,于是小小复习一下java,写个端口扫描器,玩玩吧,网上这种小公具有的是,就是自己无聊写着玩玩。
源代码如下:
共两个类,比较简单奥
运行截图:
源代码如下:
共两个类,比较简单奥
import javax.swing.*; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt.event.*; public class PortScan extends JFrame { JPanel center=new JPanel(); Box hBox0=Box.createHorizontalBox(); Box hBox1= Box.createHorizontalBox(); Box hBox2= Box.createHorizontalBox(); Box hBox3= Box.createHorizontalBox(); private JLabel state=new JLabel("关闭"); private JLabel HOST=new JLabel("主机名:"); private JLabel PORT=new JLabel("端口号:"); private JLabel STATE=new JLabel("状态:"); private JButton btn1=new JButton("开始扫描"); private JButton reset=new JButton("重置"); private JTextField host=new JTextField(20); private JTextField port=new JTextField(7); Font f1=new Font("隶书",Font.PLAIN,15); public static void main(String[] args) { JFrame portscan=new PortScan(); portscan.setVisible(true); } public PortScan(){ setTitle("PortScanner"); setSize(300, 200); center.setLayout(new BoxLayout(center,BoxLayout.Y_AXIS)); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率 setLocation(screenSize.width/4,screenSize.height/4);//位置 state.setFont(f1); HOST.setFont(f1); PORT.setFont(f1); btn1.setFont(f1); reset.setFont(f1); STATE.setFont(f1); center.add(hBox0); center.add(Box.createRigidArea(new Dimension(10,20))); center.add(hBox1); center.add(Box.createRigidArea(new Dimension(2,20))); center.add(hBox2); center.add(Box.createRigidArea(new Dimension(2,20))); center.add(hBox3); hBox0.add(HOST); hBox0.add(host); hBox1.add(PORT); hBox1.add(port); hBox2.add(btn1); hBox2.add(reset); hBox3.add(STATE); hBox3.add(state); add(center); btn1.addActionListener(new MyActionListener()); reset.addActionListener(new MyActionListener()); } class MyActionListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { String post1=host.getText(); int port1=Integer.parseInt(port.getText()); if(e.getActionCommand()=="开始扫描"){ if( PortScannerByIP.scan(post1, port1)){ state.setText("开放"); }else{ state.setText("关闭"); } } if(e.getActionCommand()=="重置"){ host.setText(""); port.setText(""); } } } }
import java.io.IOException; import java.net.Socket; public class PortScannerByIP { public static boolean scan(String host,int port){ boolean flag=true; Socket socket=null; try { socket=new Socket(host,port); return flag; } catch (IOException e) { flag=false; return flag; }finally{ try { if(socket!=null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
运行截图:
相关文章推荐
- 升级mac的java版本
- collection hierarchy in java
- Java Web学习(八)
- Tomca:8 + Mysql5 + JNDI + Eclipse4 配置数据源
- Java配置零碎知识记录
- java 类文件编译注意事项
- 判断是否是平衡二叉树
- ubuntu14.04 安装eclipse的插件maven
- DOS命令行下编译运行java文件
- SpringMVC中四个基本注解
- Spring注解详解
- 【Java基础】IO总结
- Java的基本设计结构
- JDK 6 目录结构介绍以及JDK中的工具研究
- Eclipse java工程中配置opencv
- java 实现PageRank算法
- eclipse加速之禁用JS、jsp等文件的语法验证,eclipsejs
- java 重载和覆盖的区别
- 官网下载JDK教程
- Spring Boot 常规错误一览及解决方案