调用dos命令的方法--native方法
在DOS环境中输入 ipconfig/all命令,结果如下:
        Host Name . . . . . . . . . . . . : mars
        Primary DNS Suffix  . . . . . . . :
        Node Type . . . . . . . . . . . . : Hybrid
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
       DNS Suffix Search List. . . . . . : worksoft.com.cn
PPP adapter 263:
        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : WAN (PPP/SLIP) I
        Physical Address. . . . . . . . . : 00-53-45-00-00-0
        DHCP Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 61.135.2.27
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 61.135.2.27
        DNS Servers . . . . . . . . . . . : 202.106.196.152
                                            202.106.196.115
只要在java中执行这个外部命令,然后把需要的字符串解析出来就可以了。
首先编写一个Util_syscmd类,方法execute()使我们能够执行外部命令,并返回一个Vector类型的结果集。import java.lang.*;import java.io.*;import java.util.*;/**

 */
public class Util_syscmd{ /**
 * @param shellCommand
 * 
 */
public Vector execute(String shellCommand){ try{ Start(shellCommand); Vector vResult=new Vector(); DataInputStream in=new DataInputStream(p.getInputStream()); BufferedReader reader=new BufferedReader(new 
InputStreamReader(in)); String line;
do{
line=reader.readLine();
if (line==null){
break;
}
else{
vResult.addElement(line);
}
}while(true);
reader.close();
return vResult;
}catch(Exception e){
//error
return null;
}
}
/**
 * @param shellCommand
 * 
 */
public void Start(String shellCommand){ try{
if(p!=null){
kill();
}
Runtime sys= Runtime.getRuntime();
p=sys.exec(shellCommand);
}catch(Exception e){
System.out.println(e.toString());
}
}
/**
kill this process
*/
public void kill(){
if(p!=null){
p.destroy();
p=null;
}
}

Process p;
}
然后设计一个GetSubnetAddress类,这个类用来调用Util_syscmd类的execute()方法,执行cmd.exe/c ipconfig/all命令,并解析出掩码地址。getSubnetAddress()方法返回掩码地址,如果操作系统不支持ipconfig命令,返回not find字符串import java.io.*;
import java.util.*;class GetSubnetAddress{
        //掩码地址长度
        static private final int _length =16;
        public static void main(String[] args){
               System.out.println(getSubnetAddress());
        }
        
        static public String getSubnetAddress(){
                Util_syscmd shell =new Util_syscmd();
                String cmd = "cmd.exe /c ipconfig/all";
                Vector result ;
                result=shell.execute(cmd);  
                return parseCmd(result.toString());      
        }
        //从字符串中解析出所需要获得的字符串
        static private String parseCmd(String s){
                String find="Subnet Mask. . . . . . . . . :";
                int findIndex=s.indexOf(find);
                if (findIndex==-1)
                        return "not find";
                else
                        return 
s.substring(findIndex+find.length()+1,findIndex+find.length()+1+_length);
        }
}