好久没写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编写一个端口扫描器的更多相关文章

  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. 一步一步学Remoting系列文章

    转自:http://www.cnblogs.com/lovecherry/archive/2005/05/24/161437.html (原创)一步一步学Remoting之一:从简单开始(原创)一步一 ...

  2. Get ListView items from other windows z

    This is more difficult than one might think. In order to get the information you're looking for, you ...

  3. LightOJ 1214 Large Division 水题

    java有大数模板 import java.util.Scanner; import java.math.*; public class Main { public static void main( ...

  4. [Jacky] 解决Ext.Net GridPanel 选择的行数据刷新后不能获取最新值

    选择GridPanel中一行数据,当变更数据时并重新刷新之后不能获取最新值,需通过如下方式获取: var internalId = gridPanel.getSelectionModel().getL ...

  5. imdisk命令行使用及配置

    imdisk是一个开源的虚拟磁盘软件,集虚拟光驱,文件虚拟光驱,映射物理磁盘,映射物理内存等功能 如果使用devio--Device I/O Service,可以映射网络磁盘等. 通用于windows ...

  6. 免费的SqlServer优化辅助工具:SqlOptimize (原创)

    主要用于收集客户服务器的数据库运行情况,导出-导入到本地分析. 本工具不会修改你的数据和结构,只会读取相关数据. 1)工具软件下载 http://files.cnblogs.com/files/dud ...

  7. Java笔记(三十)……正则表达式

    概述 符合一定规则的表达式 专门用于操作字符串 特点: 用于一些特定的符号来表示一些代码操作,这样就可以简化书写 所以学习正则表达式,就是在学习一些特殊符号的使用 好处: 可以简化对字符串的复杂操作 ...

  8. C++中字符串的结尾标志\0

    \0是C++中字符串的结尾标志,存储在字符串的结尾,它虽然不计入串长,但要占一个字节的内存空间.在百度百科中查看\0词条,会有这样一句话:c/c++中规定字符串的结尾标志为'\0'.有人可能认为,在C ...

  9. Spring源码入门——AnnotationBeanNameGenerator解析

    ---恢复内容开始--- 接上篇,上篇解析了DefaultBeanGenerator生成bean name的过程(http://www.cnblogs.com/jason0529/p/5272265. ...

  10. Delphi- 连接MySQL数据库BDE

    Delphi使用ADO可以连接MSSQL和ACCESS,但似乎不能连接MYSQL和ORACEL,如果要连接MYSQL和ORACLE得使用BDE. 一.连接方法 首先得先安装mysql驱动程序_mysq ...