java编写一个端口扫描器
好久没写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();
- }
- }
- }
- }
运行截图:
java编写一个端口扫描器的更多相关文章
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- mac/unix系统:C++实现一个端口扫描器
在比较早以前,我用过S扫描器, 以及大名鼎鼎的nmap扫描器, 可以快速扫描某个主机开放的端口, 今天使用C实现这样一个软件, 编译环境为Mac, 系统版本10.11.6: #include < ...
- 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输 ...
- Golang 写一个端口扫描器
前话 最近痴迷于Golang这个新兴语言,因为它是强类型编译型语言,可以直接编译成三大平台的二进制执行文件,可以直接运行无需其他依赖环境.而且Golang独特的goroutine使得多线程任务执行如n ...
- java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.
需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public cla ...
- java编写一个可以上下移动的小球:运行后,可以通过上下左右键进行移动
/* * 功能:加深对事件处理机制的理解 * 1.通过控制上下左右键,来控制一个小球的位置 */package com.test1;import java.awt.*;import javax.swi ...
- 用java编写一个微博登陆页面
上次也写了一个微博登陆页面,不过功能还不够完善.今天重新完善了一些功能,分享出来给大家. 基本功能如下: (1)具有类似新浪微博的用户注册图形界面. (2)使用用户名或手机号注册,注册时需要提供新密码 ...
- Java编写一个随机产生小学生四则运算题30道
//注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0. package 课堂测试1; import java.io.File; im ...
- 使用Java编写一个日期时间封装类
package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...
随机推荐
- MongoDB之二(增删查改)
一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value 可能是“字符串”,可能是“数组” ...
- base64dll
继上次的dll学习后,想开发个软件,连接到百度的云存储服务器,上传文件.发现要算秘钥,在网上找了到了hmac-sha1,base64的源码,发现有些是c++写的,有些是c写的一起写到一个文件里有些麻烦 ...
- Linux查看系统版本信息的
// 显示电脑以及操作系统的相关信息 uname -a // 正在运行的内核版本 cat /proc/version // 显示的是发行版本信息 cat /etc/issue // 适用于所有的lin ...
- Spring-demo1(初学者的尝试,2015.03.19)
项目结构: 源代码如下: package com.bean; public interface Person { public void Speak(); } package com.bean; pu ...
- weblogic启动时日志重定向(nohup.out)
由于weblogic使用 nohup ./startWebLogic.sh & 启动时会将所有日志打印到nohup.out上,长此以往会导致该文件越来越大,不便于管理. 故下面介绍如何重 ...
- Win8关机 一直重启的问题 解决方案-摘自网络
win8关机时自动重启的解决方法:关闭快递启动,默认是启动的,到控制面板 – 电源选项 – 选择电源按钮的功能 – 更改当前不可用的设置 – 关机设置 – 把勾去掉 关闭快速启动.这样就不会关机一直重 ...
- poj 2942--Knights of the Round Table (点的双连通分量)
做这题简直是一种折磨... 有n个骑士,骑士之间相互憎恨.给出骑士的相互憎恨的关系. 骑士要去开会,围成一圈坐,相互憎恨的骑士不能相邻.开会骑士的个数不能小于三个人.求有多少个骑士不能开会. 注意:会 ...
- 问题-delphi无法编辑oracle表
问题现象:在一次开发过程中,遇到了delphi无法编辑oracle表. 问题原因:原来是自己误操作控件的属性了. 问题处理: OraQuery1.ReadOnly:=False; OraQuery1. ...
- ldconfig及 LD_LIBRARY_PATH
dconfig及 LD_LIBRARY_PATH 1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library ...
- shiro权限控制方式
1.基于配置文件(*.ini)[常用jdbcRealm.ini] 2.基于注解的配置 3.基于jsp标签的配置(需要导入对应的标签jar包) 权限包含: 是否为特定用户 是否为特定角色 是否拥有特定操 ...