在windows或者linux操作系统中,获取多网卡信息,可通过执行命令方式获取,具体如下:
- public Vector<String> getServerIps()
- {
- Vector<String> address = new Vector<String>();
- String linuxKey = "inet";
- String window7Key = "IPv4";
- String windowKey = "IP Address";
- String os = System.getProperty("os.name");
- if (os != null)
- {
- if (os.startsWith("Windows"))
- {
- try
- {
- ProcessBuilder pb = new ProcessBuilder("ipconfig", "/all");
- Process p = pb.start();
- BufferedReader br = new BufferedReader(
- new InputStreamReader(p.getInputStream()));
- String line;
- while ((line = br.readLine()) != null)
- {
- if ((line.indexOf(window7Key) != -1)
- || (line.indexOf(windowKey) != -1))
- {
- int index = line.indexOf(":");
- int indexLast = line.indexOf("(");
- String sbstr = null;
- if (indexLast == -1)
- {
- sbstr = line.substring(index + 1).trim();
- }
- else
- {
- sbstr = line.substring(index + 1, indexLast).trim();
- }
- if (!sbstr.equals("127.0.0.1"))
- {
- address.add(sbstr);
- }
- }
- }
- br.close();
- return address;
- }
- catch (IOException e)
- {
- String localIp = "";
- try
- {
- String localHost = InetAddress.getLocalHost().toString();
- localIp = localHost.split("/")[1];
- }
- catch (UnknownHostException ex)
- {
- localIp = "127.0.0.1";
- }
- address.add(localIp);
- }
- }
- else if (os.startsWith("Linux"))
- {
- try
- {
- ProcessBuilder pb = new ProcessBuilder("ifconfig");
- Process p = pb.start();
- BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
- String line;
- while ((line = br.readLine()) != null)
- {
- if (line.indexOf(linuxKey) != -1)
- {
- int index = line.indexOf(":");
- String sbstr = line.substring(index + 1).trim();
- if (!sbstr.equals("127.0.0.1"))
- {
- address.add(sbstr);
- }
- }
- }
- br.close();
- return address;
- }
- catch (IOException ex)
- {
- String localIp = "";
- try
- {
- String localHost = InetAddress.getLocalHost().toString();
- localIp = localHost.split("/")[1];
- }
- catch (UnknownHostException eu)
- {
- localIp = "127.0.0.1";
- }
- address.add(localIp);
- }
- }
- }
- return address;
- }