用java获得windows或者linux下网卡地址的小程序

本文介绍了一个简单的Java程序,该程序通过调用操作系统命令来获取Windows和Linux系统的网卡(MAC)地址。在Windows上,它使用'ipconfig /all'命令,在Linux上,它使用'ifconfig'命令。程序首先判断操作系统类型,然后执行相应的命令获取MAC地址。

   刚找了一份工作,经理就要让我编一个产生软件注册码的程序.要命的是我从来也没编过这方面的东东,一直感觉注册码这个东西很神秘,不料上班第一天就碰上这种事.无奈.上网查找相关资料.大致了解了一下.总之就是先要获得某些硬件信息,然后加密.

   网上找了好多相关资料后,我就用VC6.0遍了一个能得到网卡地址和硬盘物理序列号的程序,本打算用jni调用,可后来发现IDE硬盘物理序列号只能在管理员权限下得到.唉~~~白忙活老半天.

  后来请示经理后,经理让我用MAC Address就可以了.所以我就参考前辈们给的一些代码,写了下面这个小程序

基本思路就是调用操作系统命令。加密算法偶就不贴出来啦~~~~

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.lang.*;

//判断操作系统类型
class GetOSname
{
 public String GetOperateSysName()
 {
  os = System.getProperty("os.name");//得到操作系统类型
  return os;
 }
 
 /*public static void main(String[] args)
 {
  GetOSname osname = new GetOSname();
  String name = osname.GetOperateSysName();
 }*/
 private String os;
}

//得到网卡信息
public class GetMacAddress
{
 public String GetMacAddress()
 {
  String osname = "";
  GetOSname getosname = new GetOSname();
  osname = getosname.GetOperateSysName();
  if(osname == null)
  {
   System.out.println("Can't get Opreate System Property");
   System.exit(0);
  }
  if(osname.startsWith("Windows"))
  {
   try
            {
                command = "ipconfig /all";//定义系统命令
                p = Runtime.getRuntime().exec(command);//执行命令
                br = new BufferedReader(new InputStreamReader(p.getInputStream()));//将输出流重定向到缓冲区
                String line;
                while ((line = br.readLine()) != null) //解析地址
                {
                    if (line.indexOf("Physical Address") > 0)
                    {
                        int index = line.indexOf(":");
                        index += 2;
                        address = line.substring(index);
                        break;
                    }
                }
                br.close();
                return address.trim();
             }
             catch (IOException e) {}
  }
  else  //linux下分析流          
        {
         if(osname.startsWith("Linux"))
         {
          try
          {
              command = "ifconfig";
              p = Runtime.getRuntime().exec(command);
              br = new BufferedReader(new InputStreamReader(p.getInputStream()));
              String line;
              while((line = br.readLine()) != null)
              {
               if(line.indexOf("HWadd") > 0)
               {
                int index = line.lastIndexOf(":");
                index += 2;
                address = line.substring(index);
                break;
               }
               }
               br.close();
                    return address.trim();
          }
          catch(IOException e){}
             //System.out.println("Linux");
         }
        }
  return address;
 }
 public static void main(String[] args)
 {
  GetMacAddress getmacaddress = new GetMacAddress();
  String macadd;
  macadd = getmacaddress.GetMacAddress();
  System.out.println(macadd);
 }
 private String address = "";
 private String command = "";
 private Process p = null;
    private BufferedReader br;
}

上面linux的那一部分我还没有调试过,其他都可以运行的.

在此特别感谢那些给我帮助的前辈大侠们,好多代码都是他们贴出来的,我只不过做了一点点工作.

唉,能骗经理就行了~~~~  大家祝福我有一天也能成为大侠吧,呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值