`
djob2008
  • 浏览: 129431 次
  • 性别: 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开发中的常见功能,涉及用户管理和安全认证。这个模块是任何Web应用程序或服务的基础,因为它确保了用户的身份验证和授权。在这个源码包中,我们可以期待找到实现这一功能的相关代码和文档。 ...

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

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

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

    在本资源中,你将找到三个完整的Java注册登录模块源代码,这些模块涵盖了Web开发中的重要环节,包括用户注册和身份验证。以下是这些模块中涉及的关键知识点和详细说明: 1. **验证码技术**:验证码是一种防止自动...

    java用户管理模块

    这里我们关注的是一个基于Java开发的用户管理模块,它是在MyEclipse集成开发环境中构建的。MyEclipse是一款强大的Java EE集成开发工具,支持多种Web项目和应用的开发。 首先,让我们深入了解一下Java在用户管理中的...

    Java9模块化demo

    6. **服务提供者接口 (SPI)**:Java 9 提供了一种改进的服务提供者注册机制,允许模块之间通过 `META-INF/services` 文件来声明服务提供者,增强了模块之间的解耦。 在 `java9test` 这个压缩包文件中,可能包含了一...

    注册模块代码

    本压缩包“注册模块代码”包含了一个完整的Java实现的注册流程,涵盖了验证码、AJAX异步验证以及表单验证等多个关键环节,这些都是确保用户数据安全性和提升用户体验的重要技术。 首先,验证码(CAPTCHA)是一种...

    软件注册模块java源码

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

    java web论坛模块

    Java Web论坛模块是基于Java技术构建的Web应用程序,主要用于实现在线讨论、信息交流等功能。它通常包括用户注册、登录、发帖、回帖、搜索、话题分类、个人中心等核心功能,是社交网络中常见的一种服务组件。在这个...

    用户注册模块代码

    用户注册模块代码

    Java Web留言本模块

    Java Web留言本模块是Web应用程序开发中的一个常见组件,它为用户提供了一个平台,可以在网站上发布、查看和回复留言。这个模块通常包含前端界面和后端服务器端代码,通过HTTP请求进行通信。在这个项目中,我们可以...

    MTK java模块简介PPT

    这涉及到系统启动时的Java初始化、系统服务的注册、系统事件的监听等。 6. **安全机制** MTK Java模块还包含了安全策略,如权限管理、代码签名验证,以保护系统和用户数据的安全,防止恶意软件的入侵。 7. **更新...

    JAVA系统开发登入模块及用户管理模块模板

    在JAVA系统开发中,用户管理和登录模块是任何应用程序的基础组件,尤其对于初学者而言,理解并实现这些功能至关重要。这个模板提供了基础的架构,帮助开发者快速构建这些功能。以下是相关知识点的详细说明: 1. **...

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

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

    JSP登录注册模块

    **JSP登录注册模块详解** 在Web开发领域,JSP(Java Server Pages)是一种用于创建动态网页的技术,它结合了HTML、JavaScript以及Java代码,使得开发者可以在服务器端处理数据并生成响应的页面内容。本模块主要关注...

    [JSP]用户注册模块参考实现

    【JSP用户注册模块参考实现】是一个典型的Web开发中的功能模块,主要应用于网站或应用程序,允许新用户创建自己的账户。JSP(JavaServer Pages)是Java的一种动态网页技术,它结合了HTML、JavaScript和Java代码,...

    java实现远程协助模块

    Java 实现远程协助模块是一项复杂而实用的技术,它允许用户通过网络进行实时的电脑操作协助。这个模块通常涉及多个核心技术,包括系统托盘集成、组件显示、本地文件存储、远程方法调用(RMI)以及图像传输。接下来,...

Global site tag (gtag.js) - Google Analytics