자바에서는 게이트웨이의 주소를 얻을 수 있는 방법이 존재하지 않는다.
따라서 다음과 같은 트릭으로 게이트웨이 주소를 얻는다.
private String getRouterIP()
{
String _255 = "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
String exIP = "(?:" + _255 + "\\.){3}" + _255;
// Regexp to find the good line
java.util.regex.Pattern pat = java.util.regex.Pattern.compile("^\\s*(?:0\\.0\\.0\\.0\\s*){1,2}("+exIP+").*");
Process proc;
try {
// netstat
proc = Runtime.getRuntime().exec("netstat -rn");
java.io.InputStream inputstream =
proc.getInputStream();
java.io.InputStreamReader inputstreamreader =
new java.io.InputStreamReader(inputstream);
java.io.BufferedReader bufferedreader =
new java.io.BufferedReader(inputstreamreader);
// Parsing the result
String line;
while ((line = bufferedreader.readLine()) != null) {
java.util.regex.Matcher m = pat.matcher(line);
// This is the good line
if(m.matches()){
// return the first group
return m.group(1);
}
}
// can't find netstat
} catch (java.io.IOException ex) {
//java.util.logging.Logger.getLogger(NetworkManager.class.getName()).log(Level.SEVERE, null, ex);
System.out.println(ex.getMessage());
}
return null;
}