在网上搜到了获取 windows 的 ipv4 地址的方法:
package com.abcd;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
// 用读取 cmd 的方式,获取本机 IPv4 地址
public class IPUtil {
// main
public static void main( String[] a ) {
Process pb = null;
//List<String> address = new ArrayList<String>();
//读取进程输出值
try{
pb = new ProcessBuilder("ipconfig", "/all").start();
}catch(Exception e){
//return address;
}
StringBuffer stb = new StringBuffer();
// 读取 cmd 会 出现中文乱码
//InputStream is = pb.getInputStream();
//InputStreamReader isr = new InputStreamReader( is );
//BufferedReader br = new BufferedReader( isr );
// 读取cmd时不会出现中文乱码
InputStreamReader isr = new InputStreamReader( pb.getInputStream(), Charset.forName( "GBK" ) );
BufferedReader br = new BufferedReader( isr );
String st = "";
try {
while ( ( st = br.readLine() ) != null ) {
stb.append( st + "\n" );
if ( st.contains( "IPv4 地址" ) ) {
System.out.println( st.trim().replace( ":", "" ).replace( "(首选)", "" ) );
}
}
} catch ( Exception e ) {
e.printStackTrace();
} finally {
try {
if ( br != null ) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if ( isr != null ) {
isr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
-----------------------------------------------
InetAddress address = InetAddress.getLocalHost();
System.out.println( address.getHostAddress() ); // 获取 windows 的IP地址,如:192.168.0.121
//System.out.println(address); // PC-name/192.168.0.121
----- 另外发现用这种方法获取到的 192.168 开头的IP地址是无效的