`
djob2008
  • 浏览: 127438 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java做的注册模块

阅读更多

转载自:http://blog.csdn.net/baohui54883/archive/2009/03/20/4006457.aspx

 

最近做了一个注册模块,跟一般的注册器有点不太一样

主要有以下几个功能:

1. 读取本机IP

2. 读取子网掩码

3. 读取MAC地址

4. 进行IP震荡探测(获取局域网中所有能连通的网段),用到nmap这个工具

5. 把以上注册信息写入一个文档中

6. 注册程序可以最小化到系统托盘

以下是源代码,和大家分享一下

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Register extends JDialog implements ActionListener {
	private JPanel infoPanel, btnPanel, ipPanel, subMaskPanel, macPanel,
			regPanel, labelPanel;

	private JLabel ipLabel, subMaskLabel, macLabel, regLabel;

	private JTextField ipTF, subMaskTF, macTF;

	private JButton regBtn, cancelBtn;

	private Scanner scanner = new Scanner();

	private TrayIcon trayIcon = null;

	private String imageName = "F:\\Detector.GIF"; // 系统托盘图标

	public Register(JFrame f, boolean b) {
		super();
		setTitle("注册");

		// -----------定义面板------------
		infoPanel = new JPanel();
		btnPanel = new JPanel();
		ipPanel = new JPanel();
		subMaskPanel = new JPanel();
		macPanel = new JPanel();
		regPanel = new JPanel();
		labelPanel = new JPanel();

		// ------------定义标签---------------
		ipLabel = new JLabel("本 机  IP:  ");
		subMaskLabel = new JLabel("子网掩码:");
		macLabel = new JLabel("MAC地址:");
		regLabel = new JLabel("该软件还未注册!");

		// -----------定义文本框-------------
		ipTF = new JTextField(20);
		subMaskTF = new JTextField(20);
		macTF = new JTextField(20);

		// -------------定义按钮------------
		regBtn = new JButton("注册");
		cancelBtn = new JButton("取消");
		regBtn.addActionListener(this);
		cancelBtn.addActionListener(this);

		// ----------面板设置---------------
		infoPanel.setLayout(new BorderLayout());
		ipPanel.add(ipLabel);
		ipPanel.add(ipTF);
		infoPanel.add(ipPanel, BorderLayout.NORTH);

		subMaskPanel.add(subMaskLabel);
		subMaskPanel.add(subMaskTF);
		infoPanel.add(subMaskPanel, BorderLayout.CENTER);

		macPanel.add(macLabel);
		macPanel.add(macTF);
		infoPanel.add(macPanel, BorderLayout.SOUTH);

		// //////////////////////////////
		regPanel.setLayout(new BorderLayout());
		labelPanel.add(regLabel);
		regPanel.add(labelPanel, BorderLayout.NORTH);

		btnPanel.add(regBtn);
		btnPanel.add(cancelBtn);
		regPanel.add(btnPanel, BorderLayout.CENTER);

		// -----------整体设置---------------
		setLayout(new BorderLayout());
		getContentPane().add(infoPanel, BorderLayout.NORTH);
		getContentPane().add(regPanel, BorderLayout.CENTER);

		ipTF.setText(scanner.getLocalIP());
		ipTF.setEditable(false);

		subMaskTF.setText(scanner.getSubMask());
		subMaskTF.setEditable(false);

		macTF.setText(scanner.getLocalMac());
		macTF.setEditable(false);

		setVisible(true);
		pack();
		double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
		double height = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
		setLocation((int) (width - this.getWidth()) / 2, (int) (height - this
				.getHeight()) / 2);

		// 最小化
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				setVisible(false);
			}
		});

		// -----------------------------最小化到系统托盘-----------------------------
		if (SystemTray.isSupported()) { // 检查当前系统是否支持系统托盘
			SystemTray tray = SystemTray.getSystemTray(); // 获取表示桌面托盘区的
			// SystemTray 实例。
			Image image = Toolkit.getDefaultToolkit().getImage(imageName);
			PopupMenu popupMenu = new PopupMenu();
			MenuItem exitItem = new MenuItem("退出");
			MenuItem showItem = new MenuItem("显示");
			MenuItem aboutItem = new MenuItem("关于");

			// 退出
			exitItem.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					int n = JOptionPane.showConfirmDialog(null, "是否中止注册过程?",
							"询问", JOptionPane.YES_NO_OPTION);
					if (n == JOptionPane.YES_OPTION) {
						System.exit(0);
					}
				}
			});

			// 显示
			showItem.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					showIT(true);
				}
			});

			// 关于
			aboutItem.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					JOptionPane
							.showMessageDialog(
									null,
									"注册器1.0");
}
			});

			popupMenu.add(aboutItem);
			popupMenu.add(showItem);
			popupMenu.add(exitItem);

			trayIcon = new TrayIcon(image, "注册器", popupMenu);
			trayIcon.setImageAutoSize(true);

			// 双击图标显示界面
			trayIcon.addMouseListener(new MouseAdapter() {
				public void mouseClicked(MouseEvent e) {
					if (e.getClickCount() == 2) {
						showIT(true);
					}
				}
			});

			try {
				tray.add(trayIcon); // 将TrayIcon 添加到SystemTray。
			} catch (AWTException e) {
				System.err.println(e);
			}
		} else {
			System.out.println("您的系统不支持系统托盘");
		}
	}

	public void showIT(boolean visable) {
		if (this.isVisible() != visable)
			this.setVisible(visable);
	}

	public static void main(String[] args) throws Exception {
		Register register = new Register(null, true);
	}

	public void actionPerformed(ActionEvent e) {
		if (regBtn.getText().equals("注册")) {
			regLabel.setText("正在进行注册,注册过程可能需要20分钟。");
			scanner = new Scanner();
			scanner.start();

			new ChargeFinished().start();

		}

		if (e.getSource() == cancelBtn) {
			setVisible(false);
		}
	}

	class ChargeFinished extends Thread {
		public void run() {
			while (true) {
				if (scanner.scanFlag == 1) {
					regLabel.setText("注册完毕!");
					regBtn.setText("已注册");
					regBtn.setEnabled(false);
					showIT(true);
					break;
				}
			}
		}
	}
}

/**
 * IP震荡函数
 * @author Administrator
 *
 */
class Scanner extends Thread {
	public int scanFlag;

	String regInfo = "";

	public String wholeInfo = "";

	public void run() {
		String startIP = "192.168.1.1";
		String endIP = "192.168.255.255";

		int i = 0;
		int j = 0;

		StringTokenizer strToken = new StringTokenizer(startIP, ".");
		String[] startIPAddress = new String[strToken.countTokens()];
		StringTokenizer strToken2 = new StringTokenizer(endIP, ".");
		String[] endIPAddress = new String[strToken.countTokens()];
		while (strToken.hasMoreTokens()) {
			startIPAddress[i] = strToken.nextToken();
			i++;
		}
		while (strToken2.hasMoreTokens()) {
			endIPAddress[j] = strToken2.nextToken();
			j++;
		}

		Runtime run = Runtime.getRuntime();

		int m = Integer.parseInt(startIPAddress[2]);
		int n = Integer.parseInt(endIPAddress[2]);

		for (int ipNo = m; ipNo <= n; ipNo++) {
			String newIP = startIPAddress[0] + "." + startIPAddress[1] + "."
					+ ipNo + "." + "0-1";
			String cmd = "d:\\nmap-4.53\\nmap -sP " + newIP;
			try {
				Process p = run.exec(cmd);
				BufferedInputStream in = new BufferedInputStream(p
						.getInputStream());
				BufferedReader br = new BufferedReader(
						new InputStreamReader(in));
				String temp;
				while ((temp = br.readLine()) != null) {
					if (temp.startsWith("Host")) {
						String routeIP = startIPAddress[0] + "."
								+ startIPAddress[1] + "." + ipNo + "." + "1";
						wholeInfo = wholeInfo + routeIP + "\n";
						break;
					}
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		scanFlag = 1;
		Calendar todaysDate = new GregorianCalendar();
		int year = todaysDate.get(Calendar.YEAR);
		int month = todaysDate.get(Calendar.MONTH) + 1;
		int day = todaysDate.get(Calendar.DAY_OF_MONTH);
		
		String regDate = "注册日期:" + year + "年" + month + "月" + day + "日";

		regInfo = "本机IP:" + getLocalIP() + "\n" + "MAC地址:" + getLocalMac()
				+ "\n" + "子网掩码:" + getSubMask() + "\n" + "路由地址:" + "\n"
				+ wholeInfo + regDate;

		writeTxt();
	}
	
	/**
	 * 获得本机IP
	 * @return  localIP
	 */
	public String getLocalIP() {
		InetAddress inet = null;
		String localIP = null;
		String ip = null;
		int num = 0;

		try {
			inet = InetAddress.getLocalHost();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}

		ip = inet.toString();
		num = ip.indexOf("/");
		localIP = ip.substring(num + 1);

		return localIP;
	}

	/**
	 * 获得MAC地址
	 * @return macAddress
	 */
	public String getLocalMac() {
		String macAddressTemp = "";
		String[] macAddress = null;
		int j = 0;

		try {
			String cmd = "ipconfig /all";
			Runtime run = Runtime.getRuntime();
			Process p = run.exec(cmd);
			BufferedInputStream in = new BufferedInputStream(p.getInputStream());
			BufferedReader br = new BufferedReader(new InputStreamReader(in));

			String line;
			int i = 0;
			while ((line = br.readLine()) != null) {
				if ((i = line.indexOf("Physical Address")) != -1) {
					String temp = line.substring(i + 36);
					macAddressTemp = macAddressTemp + temp + "\n";
				}
			}

			macAddress = macAddressTemp.split("\n");		//有些机子装有双网卡或虚拟机,相应会多出几个mac地址,取最后一个本地连接的mac地址
			j = macAddress.length;
		} catch (IOException e) {
			e.printStackTrace();
		}
		return macAddress[j - 1];
	}
	
	/**
	 * 获取子网掩码
	 * @return subnetMask
	 */
	public String getSubMask() {
		String subnetMaskTemp = "";
		String[] subnetMask = null;
		int j = 0;

		try {
			String cmd = "ipconfig /all";
			Runtime run = Runtime.getRuntime();
			Process p = run.exec(cmd);
			BufferedInputStream in = new BufferedInputStream(p.getInputStream());
			BufferedReader br = new BufferedReader(new InputStreamReader(in));

			String line;
			int i = 0;
			while ((line = br.readLine()) != null) {
				if ((i = line.indexOf("Subnet Mask")) != -1) {
					String temp = line.substring(i + 36);
					subnetMaskTemp = subnetMaskTemp + temp + "\n";
				}
			}

			subnetMask = subnetMaskTemp.split("\n");
			j = subnetMask.length;
		} catch (IOException e) {
			e.printStackTrace();
		}

		return subnetMask[j - 1];
	}

	public void writeTxt() {
		File file = new File("E:\\register. xdja");		//写入E:\register. xdja这个文件中

		try {
			file.createNewFile();
			BufferedWriter bw = new BufferedWriter(new FileWriter(file));
			bw.write(regInfo);
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

    Java用户注册登录模块

    Java用户注册登录模块 这是一个综合性知识要求较强的程序设计,涵盖了CoreJava的很多知识点。希望可以为读者作为参考。 主要技术点: 1.OOP 2.正则表达式 3.List集合 4.GUI(awt+swing) 5.IO 6.Excetion ……

    java实现软件注册模块

    编写软件注册窗体 注册机的实现 java实现软件注册模块

    java注册登录模块

    java注册 登录 源码 Java模块 有详细说明

    java项目实用模块-注册与登录验证

    很实用的java项目模块,在项目开发过程中能借鉴其中的很多代码。

    三个完整的java注册登录模块源代码和设计说明

    里面含有三个完整的java注册登录模块。有验证码,ajax异步验证,表单验证等知识点

    软件注册模块java源码

    软件注册模块java源码,适用于java学习者,希望能帮助大家

    Java用户注册登录模块业务拆解步骤.docx

    # Java用户注册登录模块业务拆解步骤 1. 设计数据库表 创建用户表,包含用户ID、用户名、密码等字段。 2. 创建Java类 创建User类用于表示用户对象,包含属性如userID、username、password等。 3. 编写数据库...

    注册模块代码

    里面含有一个完整的java注册模块。包含了验证码,ajax异步验证,表单验证等

    用户注册模块代码

    用户注册模块代码

    java用户管理模块

    myeclipse做的用户管理模块。包括登陆,注册,查询,修改和删除

    Java Web典型模块与项目实战大全

    典型模块篇包括系统登录与注册模块、心之语许愿墙、电子通讯录、青匆校园留言板、自动建站模块、碧蓝晴空聊天室、搜索引擎模块、雨晨网络相册、购物车模块、在线支付模块、在线投票统计、备忘录模块、文件上传与...

    Java典型模块精解:系统登录与注册

    技术要点: 1,使用java绘图技术生成彩色验证码 2,使用Commens Lang组件 3,使用Commons DbUtils组件简化JDBC开发 4,使用正则表达式校验用户注册信息

    Java典型模块开发大全源码(2-21章)完整版

    然后通过对数码照片管理模块、FTP文件管理模块、电子地图、网络五子棋游戏、远程协助模块、软件注册模块、多媒体播放器模块、决策分析模块、桌面精灵、短信发送模块、电子阅读器模块、网页浏览器模块、万能打印模块...

    软件注册模块

    如果用户选择“我想试用该软件”单选按钮,并单击“继续”按钮时,软件进入试用状态,如果用户选择“我有一个序列号,我想使用该软件” 单选按钮,并单击“继续”按钮时,软件进入软件注册窗体。打开注册机窗口,如...

    用java做的新闻网站设计实现(包含后台管理系统)

    系统由登录模块,注册模块,俱乐部管理,球员管理,战报管理,新闻公告管理,角色管理,系统管理模块等模块组成。每个模块都实现了增加、删除、修改,查询等相关操作。为了保证系统的安全性,在用户登录系统设计时,...

    java ssm 登陆注册模块 邮件发送激活

    这个项目是我写的注册登陆模块,框架用的ssm框架,自动生成的mapper,前台用js作了登陆注册的校验,后台也做了相关的校验,防止有漏洞出现,前台用了jquery+ajax 里面附赠了有分页的工具类,我写分页一直用的这个...

    注册登录模块

    注册登录模块,脉络清晰。未使用Ajax技术实现注册时光标下移即可反馈用户名是否被占用功能,可以自行添加,适合菜鸟学习!

    java 编写 软件注册程序

    《Java开发典型模块大全》一书中的源代码。 经典代码! 非常值得借鉴和学习! 实现多种方式的软件注册 实现多种复杂方式的验证码

    JAVA实现简单系统登陆注册模块

    主要介绍了一个简单完整的登陆注册模块的实现过程,文章条理清晰,在实现过程中加深了对相关概念的理解,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics