好久没写java了,学的时候,也没学习网络编程这一块,无意中看到了一本书,于是小小复习一下java,写个端口扫描器,玩玩吧,网上这种小公具有的是,就是自己无聊写着玩玩。

源代码如下:

共两个类,比较简单奥

  1. import javax.swing.*;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.Font;
  5. import java.awt.Toolkit;
  6. import java.awt.event.*;
  7. public class PortScan extends JFrame {
  8. JPanel center=new JPanel();
  9. Box hBox0=Box.createHorizontalBox();
  10. Box hBox1= Box.createHorizontalBox();
  11. Box hBox2= Box.createHorizontalBox();
  12. Box hBox3= Box.createHorizontalBox();
  13. private JLabel state=new JLabel("关闭");
  14. private JLabel HOST=new JLabel("主机名:");
  15. private JLabel PORT=new JLabel("端口号:");
  16. private JLabel STATE=new JLabel("状态:");
  17. private JButton btn1=new JButton("开始扫描");
  18. private JButton reset=new JButton("重置");
  19. private JTextField host=new JTextField(20);
  20. private JTextField port=new JTextField(7);
  21. Font f1=new Font("隶书",Font.PLAIN,15);
  22. public static void main(String[] args) {
  23. JFrame portscan=new PortScan();
  24. portscan.setVisible(true);
  25. }
  26.  
  27. public PortScan(){
  28. setTitle("PortScanner");
  29. setSize(300, 200);
  30. center.setLayout(new BoxLayout(center,BoxLayout.Y_AXIS));
  31. Toolkit kit = Toolkit.getDefaultToolkit();
  32. Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率
  33. setLocation(screenSize.width/4,screenSize.height/4);//位置
  34. state.setFont(f1);
  35. HOST.setFont(f1);
  36. PORT.setFont(f1);
  37. btn1.setFont(f1);
  38. reset.setFont(f1);
  39. STATE.setFont(f1);
  40. center.add(hBox0);
  41. center.add(Box.createRigidArea(new Dimension(10,20)));
  42. center.add(hBox1);
  43. center.add(Box.createRigidArea(new Dimension(2,20)));
  44. center.add(hBox2);
  45. center.add(Box.createRigidArea(new Dimension(2,20)));
  46. center.add(hBox3);
  47. hBox0.add(HOST);
  48. hBox0.add(host);
  49. hBox1.add(PORT);
  50. hBox1.add(port);
  51. hBox2.add(btn1);
  52. hBox2.add(reset);
  53. hBox3.add(STATE);
  54. hBox3.add(state);
  55. add(center);
  56. btn1.addActionListener(new MyActionListener());
  57. reset.addActionListener(new MyActionListener());
  58. }
  59. class MyActionListener implements ActionListener{
  60.  
  61. @Override
  62. public void actionPerformed(ActionEvent e) {
  63. String post1=host.getText();
  64. int port1=Integer.parseInt(port.getText());
  65. if(e.getActionCommand()=="开始扫描"){
  66. if( PortScannerByIP.scan(post1, port1)){
  67. state.setText("开放");
  68. }else{
  69. state.setText("关闭");
  70. }
  71.  
  72. }
  73. if(e.getActionCommand()=="重置"){
  74. host.setText("");
  75. port.setText("");
  76. }
  77. }
  78.  
  79. }
  80. }
  1. import java.io.IOException;
  2. import java.net.Socket;
  3.  
  4. public class PortScannerByIP {
  5.  
  6. public static boolean scan(String host,int port){
  7. boolean flag=true;
  8. Socket socket=null;
  9. try {
  10. socket=new Socket(host,port);
  11. return flag;
  12. } catch (IOException e) {
  13. flag=false;
  14. return flag;
  15. }finally{
  16. try {
  17. if(socket!=null)
  18. socket.close();
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }
  24. }

运行截图:

java编写一个端口扫描器的更多相关文章

  1. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  2. mac/unix系统:C++实现一个端口扫描器

    在比较早以前,我用过S扫描器, 以及大名鼎鼎的nmap扫描器, 可以快速扫描某个主机开放的端口, 今天使用C实现这样一个软件, 编译环境为Mac, 系统版本10.11.6: #include < ...

  3. 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

    题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输 ...

  4. Golang 写一个端口扫描器

    前话 最近痴迷于Golang这个新兴语言,因为它是强类型编译型语言,可以直接编译成三大平台的二进制执行文件,可以直接运行无需其他依赖环境.而且Golang独特的goroutine使得多线程任务执行如n ...

  5. java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.

    需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public cla ...

  6. java编写一个可以上下移动的小球:运行后,可以通过上下左右键进行移动

    /* * 功能:加深对事件处理机制的理解 * 1.通过控制上下左右键,来控制一个小球的位置 */package com.test1;import java.awt.*;import javax.swi ...

  7. 用java编写一个微博登陆页面

    上次也写了一个微博登陆页面,不过功能还不够完善.今天重新完善了一些功能,分享出来给大家. 基本功能如下: (1)具有类似新浪微博的用户注册图形界面. (2)使用用户名或手机号注册,注册时需要提供新密码 ...

  8. Java编写一个随机产生小学生四则运算题30道

    //注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0. package 课堂测试1; import java.io.File; im ...

  9. 使用Java编写一个日期时间封装类

    package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...

随机推荐

  1. MongoDB之二(增删查改)

    一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value 可能是“字符串”,可能是“数组” ...

  2. base64dll

    继上次的dll学习后,想开发个软件,连接到百度的云存储服务器,上传文件.发现要算秘钥,在网上找了到了hmac-sha1,base64的源码,发现有些是c++写的,有些是c写的一起写到一个文件里有些麻烦 ...

  3. Linux查看系统版本信息的

    // 显示电脑以及操作系统的相关信息 uname -a // 正在运行的内核版本 cat /proc/version // 显示的是发行版本信息 cat /etc/issue // 适用于所有的lin ...

  4. Spring-demo1(初学者的尝试,2015.03.19)

    项目结构: 源代码如下: package com.bean; public interface Person { public void Speak(); } package com.bean; pu ...

  5. weblogic启动时日志重定向(nohup.out)

    由于weblogic使用  nohup ./startWebLogic.sh &   启动时会将所有日志打印到nohup.out上,长此以往会导致该文件越来越大,不便于管理. 故下面介绍如何重 ...

  6. Win8关机 一直重启的问题 解决方案-摘自网络

    win8关机时自动重启的解决方法:关闭快递启动,默认是启动的,到控制面板 – 电源选项 – 选择电源按钮的功能 – 更改当前不可用的设置 – 关机设置 – 把勾去掉 关闭快速启动.这样就不会关机一直重 ...

  7. poj 2942--Knights of the Round Table (点的双连通分量)

    做这题简直是一种折磨... 有n个骑士,骑士之间相互憎恨.给出骑士的相互憎恨的关系. 骑士要去开会,围成一圈坐,相互憎恨的骑士不能相邻.开会骑士的个数不能小于三个人.求有多少个骑士不能开会. 注意:会 ...

  8. 问题-delphi无法编辑oracle表

    问题现象:在一次开发过程中,遇到了delphi无法编辑oracle表. 问题原因:原来是自己误操作控件的属性了. 问题处理: OraQuery1.ReadOnly:=False; OraQuery1. ...

  9. ldconfig及 LD_LIBRARY_PATH

    dconfig及 LD_LIBRARY_PATH 1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library ...

  10. shiro权限控制方式

    1.基于配置文件(*.ini)[常用jdbcRealm.ini] 2.基于注解的配置 3.基于jsp标签的配置(需要导入对应的标签jar包) 权限包含: 是否为特定用户 是否为特定角色 是否拥有特定操 ...