import java.net.InetAddress
import java.net.NetworkInterface
import java.net.SocketException
import java.util.ArrayList
import java.util.Enumeration
import java.util.List
/**
* @author Becolette
* @description TODO
* @date 2015-11-5 下午01:58:46
*/
public class IpAddress {
public static String find() {
List<String>ips = new ArrayList<String>()
// 返回所有网络接口的一个枚举实例
Enumeration<?>allNetInterfaces = null
try {
allNetInterfaces = NetworkInterface.getNetworkInterfaces()
} catch (SocketException e) {
e.printStackTrace()
}
InetAddress ip = null
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement()
Enumeration<InetAddress>addresses = netInterface.getInetAddresses()
while (addresses.hasMoreElements()) {
// 获得当前网络接口
ip = (InetAddress) addresses.nextElement()
if (ip != null &&ip instanceof Inet4Address &&ip.getHostAddress().indexOf(".") != -1) {
ips.add(ip.getHostAddress())
}
}
}
if (ips.size() == 1) {
return ips.get(0)
} else {
for (String ipa : ips) {
if (!"127.0.0.1".equals(ipa)) {
return ipa
}
}
}
return MacAddress.find()
}
}
方法如下:方法一,使用CMD命令:
public static String getLocalIPForCMD(){
StringBuilder sb = new StringBuilder()
String command = "cmd.exe /c ipconfig | findstr IPv4"
try {
Process p = Runtime.getRuntime().exec(command)
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()))
String line = null
while((line = br.readLine()) != null){
line = line.substring(line.lastIndexOf(":")+2,line.length())
sb.append(line)
}
br.close()
p.destroy()
} catch (IOException e) {
e.printStackTrace()
}
return sb.toString()
}
方法二,使用Java方法:
public static String getLocalIPForJava(){
StringBuilder sb = new StringBuilder()
try {
Enumeration<NetworkInterface>en = NetworkInterface.getNetworkInterfaces()
while (en.hasMoreElements()) {
NetworkInterface intf = (NetworkInterface) en.nextElement()
Enumeration<InetAddress>enumIpAddr = intf.getInetAddresses()
while (enumIpAddr.hasMoreElements()) {
InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement()
if (!inetAddress.isLoopbackAddress() &&!inetAddress.isLinkLocalAddress()
&&inetAddress.isSiteLocalAddress()) {
sb.append(inetAddress.getHostAddress().toString()+"\n")
}
}
}
} catch (SocketException e) { }
return sb.toString()
}