- 浏览: 127438 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 7041.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变 ... -
Java基础:Java开发中的23种设计模式
2009-10-26 10:07 5441、工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品, ... -
java中120个经典问题(1)
2009-10-26 10:03 7031.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便 ... -
EXE4J
2009-10-17 16:49 1919进入exe4j的网站 http://www ... -
Clone 方法的使用(深度克隆)
2009-10-16 09:14 701转载自:http://www.java2000.net/p12 ... -
MANIFEST.MF 文件内容详解
2009-10-15 19:21 699MANIFEST.MF 文件内容详解 打开 ... -
一段最简单的生成不重复随机数的程序
2009-10-15 18:44 903转载:http://www.java2000.net/p711 ... -
java 获取当前路径方法
2009-10-15 16:45 2078import java.io.File; /** * ... -
java操作注册表
2009-10-10 14:26 776/** *@Author *@Date Oct 10, 2 ... -
Java编程那些事儿108——网络编程示例1
2009-06-24 10:01 646陈跃峰 出自:http://blog.csdn.net ... -
使用J2SE API读取Properties文件的六种方法
2009-05-23 12:26 812转载自:http://www.java2000.net/p85 ... -
Java IO处理类的汇总
2009-05-21 22:41 719http://www.java2000.net/p1225 ... -
Java对象的序列化和反序列化
2009-05-20 23:43 673转载:http://www.java2000.net/p134 ... -
java写文件方法之比较
2009-05-20 23:37 1612import java.io.BufferedOutputSt ... -
Java图像传输方法
2009-05-18 12:07 3100在研发B/S视频系统时候涉及到了图片在网络中的传输,研究了一些 ... -
算术运算符部分=晋升
2009-05-15 23:17 718在算术运算符部分,需要特别注意的一个语法现象是“晋升”。晋升指 ... -
JDK1.5新特性
2009-05-09 21:32 840今天浏览了jdk1.5的新特性: 泛型: public c ... -
编写Java动态代理的步骤
2009-05-08 17:29 879编写Java动态代理的步骤如下: 1.创建一个实现接口 ... -
每个初学者都应该搞懂的几个问题?
2009-05-07 19:56 563转载自:http://flustar.itey ... -
eclipse插件大全介绍,以及下载地址(转)
2009-02-24 17:22 3234好东西先放好先^_^ Eclipse及其插 ...
相关推荐
Java用户注册登录模块 这是一个综合性知识要求较强的程序设计,涵盖了CoreJava的很多知识点。希望可以为读者作为参考。 主要技术点: 1.OOP 2.正则表达式 3.List集合 4.GUI(awt+swing) 5.IO 6.Excetion ……
编写软件注册窗体 注册机的实现 java实现软件注册模块
java注册 登录 源码 Java模块 有详细说明
很实用的java项目模块,在项目开发过程中能借鉴其中的很多代码。
里面含有三个完整的java注册登录模块。有验证码,ajax异步验证,表单验证等知识点
软件注册模块java源码,适用于java学习者,希望能帮助大家
# Java用户注册登录模块业务拆解步骤 1. 设计数据库表 创建用户表,包含用户ID、用户名、密码等字段。 2. 创建Java类 创建User类用于表示用户对象,包含属性如userID、username、password等。 3. 编写数据库...
里面含有一个完整的java注册模块。包含了验证码,ajax异步验证,表单验证等
用户注册模块代码
myeclipse做的用户管理模块。包括登陆,注册,查询,修改和删除
典型模块篇包括系统登录与注册模块、心之语许愿墙、电子通讯录、青匆校园留言板、自动建站模块、碧蓝晴空聊天室、搜索引擎模块、雨晨网络相册、购物车模块、在线支付模块、在线投票统计、备忘录模块、文件上传与...
技术要点: 1,使用java绘图技术生成彩色验证码 2,使用Commens Lang组件 3,使用Commons DbUtils组件简化JDBC开发 4,使用正则表达式校验用户注册信息
然后通过对数码照片管理模块、FTP文件管理模块、电子地图、网络五子棋游戏、远程协助模块、软件注册模块、多媒体播放器模块、决策分析模块、桌面精灵、短信发送模块、电子阅读器模块、网页浏览器模块、万能打印模块...
如果用户选择“我想试用该软件”单选按钮,并单击“继续”按钮时,软件进入试用状态,如果用户选择“我有一个序列号,我想使用该软件” 单选按钮,并单击“继续”按钮时,软件进入软件注册窗体。打开注册机窗口,如...
系统由登录模块,注册模块,俱乐部管理,球员管理,战报管理,新闻公告管理,角色管理,系统管理模块等模块组成。每个模块都实现了增加、删除、修改,查询等相关操作。为了保证系统的安全性,在用户登录系统设计时,...
这个项目是我写的注册登陆模块,框架用的ssm框架,自动生成的mapper,前台用js作了登陆注册的校验,后台也做了相关的校验,防止有漏洞出现,前台用了jquery+ajax 里面附赠了有分页的工具类,我写分页一直用的这个...
注册登录模块,脉络清晰。未使用Ajax技术实现注册时光标下移即可反馈用户名是否被占用功能,可以自行添加,适合菜鸟学习!
《Java开发典型模块大全》一书中的源代码。 经典代码! 非常值得借鉴和学习! 实现多种方式的软件注册 实现多种复杂方式的验证码
主要介绍了一个简单完整的登陆注册模块的实现过程,文章条理清晰,在实现过程中加深了对相关概念的理解,需要的朋友可以参考下