- 浏览: 130440 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
20082233:
你能详细解释下代码的意思吗?谢谢
js时间日期格式化 -
zhoche2008:
好文章,解决了我的问题
swt执行线程 -
hanyafei:
朋友,你那第二个选择之后出错,你那是正确的吗?
JSP+AJAX三级级联及更多级的实现 -
EdenWang:
哥们,这能显示么?
strut2异常问题的解决 -
JavaLanguageFun:
标记一下 ,这个不错。
eclipse插件大全介绍,以及下载地址(转)
转载自: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(); } } }
发表评论
-
浅复制与深复制概念
2010-09-28 11:00 7391.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变 ... -
Java基础:Java开发中的23种设计模式
2009-10-26 10:07 5741、工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品, ... -
java中120个经典问题(1)
2009-10-26 10:03 7381.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便 ... -
EXE4J
2009-10-17 16:49 1936进入exe4j的网站 http://www ... -
Clone 方法的使用(深度克隆)
2009-10-16 09:14 731转载自:http://www.java2000.net/p12 ... -
MANIFEST.MF 文件内容详解
2009-10-15 19:21 726MANIFEST.MF 文件内容详解 打开 ... -
一段最简单的生成不重复随机数的程序
2009-10-15 18:44 930转载:http://www.java2000.net/p711 ... -
java 获取当前路径方法
2009-10-15 16:45 2108import java.io.File; /** * ... -
java操作注册表
2009-10-10 14:26 807/** *@Author *@Date Oct 10, 2 ... -
Java编程那些事儿108——网络编程示例1
2009-06-24 10:01 672陈跃峰 出自:http://blog.csdn.net ... -
使用J2SE API读取Properties文件的六种方法
2009-05-23 12:26 840转载自:http://www.java2000.net/p85 ... -
Java IO处理类的汇总
2009-05-21 22:41 745http://www.java2000.net/p1225 ... -
Java对象的序列化和反序列化
2009-05-20 23:43 702转载:http://www.java2000.net/p134 ... -
java写文件方法之比较
2009-05-20 23:37 1641import java.io.BufferedOutputSt ... -
Java图像传输方法
2009-05-18 12:07 3126在研发B/S视频系统时候涉及到了图片在网络中的传输,研究了一些 ... -
算术运算符部分=晋升
2009-05-15 23:17 746在算术运算符部分,需要特别注意的一个语法现象是“晋升”。晋升指 ... -
JDK1.5新特性
2009-05-09 21:32 874今天浏览了jdk1.5的新特性: 泛型: public c ... -
编写Java动态代理的步骤
2009-05-08 17:29 919编写Java动态代理的步骤如下: 1.创建一个实现接口 ... -
每个初学者都应该搞懂的几个问题?
2009-05-07 19:56 587转载自:http://flustar.itey ... -
eclipse插件大全介绍,以及下载地址(转)
2009-02-24 17:22 3284好东西先放好先^_^ Eclipse及其插 ...
相关推荐
Java用户注册登录模块 这是一个综合性知识要求较强的程序设计,涵盖了CoreJava的很多知识点。希望可以为读者作为参考。 主要技术点: 1.OOP 2.正则表达式 3.List集合 4.GUI(awt+swing) 5.IO 6.Excetion ……
编写软件注册窗体 注册机的实现 java实现软件注册模块
Java注册登录模块是Java开发中的常见功能,涉及用户管理和安全认证。这个模块是任何Web应用程序或服务的基础,因为它确保了用户的身份验证和授权。在这个源码包中,我们可以期待找到实现这一功能的相关代码和文档。 ...
很实用的java项目模块,在项目开发过程中能借鉴其中的很多代码。
在本资源中,你将找到三个完整的Java注册登录模块源代码,这些模块涵盖了Web开发中的重要环节,包括用户注册和身份验证。以下是这些模块中涉及的关键知识点和详细说明: 1. **验证码技术**:验证码是一种防止自动...
这里我们关注的是一个基于Java开发的用户管理模块,它是在MyEclipse集成开发环境中构建的。MyEclipse是一款强大的Java EE集成开发工具,支持多种Web项目和应用的开发。 首先,让我们深入了解一下Java在用户管理中的...
6. **服务提供者接口 (SPI)**:Java 9 提供了一种改进的服务提供者注册机制,允许模块之间通过 `META-INF/services` 文件来声明服务提供者,增强了模块之间的解耦。 在 `java9test` 这个压缩包文件中,可能包含了一...
本压缩包“注册模块代码”包含了一个完整的Java实现的注册流程,涵盖了验证码、AJAX异步验证以及表单验证等多个关键环节,这些都是确保用户数据安全性和提升用户体验的重要技术。 首先,验证码(CAPTCHA)是一种...
软件注册模块java源码,适用于java学习者,希望能帮助大家
Java Web论坛模块是基于Java技术构建的Web应用程序,主要用于实现在线讨论、信息交流等功能。它通常包括用户注册、登录、发帖、回帖、搜索、话题分类、个人中心等核心功能,是社交网络中常见的一种服务组件。在这个...
用户注册模块代码
该项目是一款基于Java语言的注册模块设计源码,总计包含55个文件,均为Java源文件。该模块的设计旨在提供高效、稳定的用户注册功能,适用于各类Java开发场景。
Java Web留言本模块是Web应用程序开发中的一个常见组件,它为用户提供了一个平台,可以在网站上发布、查看和回复留言。这个模块通常包含前端界面和后端服务器端代码,通过HTTP请求进行通信。在这个项目中,我们可以...
这涉及到系统启动时的Java初始化、系统服务的注册、系统事件的监听等。 6. **安全机制** MTK Java模块还包含了安全策略,如权限管理、代码签名验证,以保护系统和用户数据的安全,防止恶意软件的入侵。 7. **更新...
在JAVA系统开发中,用户管理和登录模块是任何应用程序的基础组件,尤其对于初学者而言,理解并实现这些功能至关重要。这个模板提供了基础的架构,帮助开发者快速构建这些功能。以下是相关知识点的详细说明: 1. **...
然后通过对数码照片管理模块、FTP文件管理模块、电子地图、网络五子棋游戏、远程协助模块、软件注册模块、多媒体播放器模块、决策分析模块、桌面精灵、短信发送模块、电子阅读器模块、网页浏览器模块、万能打印模块...
**JSP登录注册模块详解** 在Web开发领域,JSP(Java Server Pages)是一种用于创建动态网页的技术,它结合了HTML、JavaScript以及Java代码,使得开发者可以在服务器端处理数据并生成响应的页面内容。本模块主要关注...
【JSP用户注册模块参考实现】是一个典型的Web开发中的功能模块,主要应用于网站或应用程序,允许新用户创建自己的账户。JSP(JavaServer Pages)是Java的一种动态网页技术,它结合了HTML、JavaScript和Java代码,...