好久没写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. BrnShop开源网上商城第三讲:插件的工作机制

    这几天BrnShop的开发工作比较多,所以这一篇文章来的晚了一些,还请大家见谅呀!还有通知大家一下BrnShop1.0.312版本已经发布,此版本添加了报表统计等新功能,需要源码的园友可以点此下载.好 ...

  2. UVA 11916 Emoogle Grid 离散对数 大步小步算法

    LRJ白书上的题 #include <stdio.h> #include <iostream> #include <vector> #include <mat ...

  3. win7下的vxworks总结

    在visualbox下运行vxworks 先来看一张效果图: 在tornado端 成功运行第一个程序,输出了visualbox can run the vxworks ! 在vmware下的速度快多了 ...

  4. Java笔记(八)……数组

    数组的概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 数组的格式 元素类型[] 数组名 = new 元素类型[个数]; int[ ...

  5. oracle nologging用法

    一.oracle日志模式分为(logging,force logging,nologging) 默认情况是logging,就是会记录到redo日志中,force logging是强制记录日志,nolo ...

  6. qualcomm platform camera porting

    转载自http://www.cnblogs.com/thjfk/p/4086001.html camera基本代码架构 Camera原理:外部光线穿过lens后,经过color filter滤波后照射 ...

  7. YUV格式总结

    1. YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间.在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取 ...

  8. Windows Service installutil 部署时,出错的解决办法-原创

    出错信息如下: ---------------------------------------------------------- ~~~~~... The Rollback phase compl ...

  9. LightOj 1282 Leading and Trailing

    求n^k的前三位数字和后三位数字. 范围: n (2 ≤ n < 231) and k (1 ≤ k ≤ 107). 前三位: 设 n^k = x ---> lg(n^k)=lg(x) - ...

  10. [poj 2186]Popular Cows[Tarjan强连通分量]

    题意: 有一群牛, a会认为b很帅, 且这种认为是传递的. 问有多少头牛被其他所有牛认为很帅~ 思路: 关键就是分析出缩点之后的有向树只能有一个叶子节点(出度为0). 做法就是Tarjan之后缩点统计 ...