2011-05-10 7 views

답변

0

쉬운 방법은 없습니다. 로컬 시스템 명령을 호출하고 출력을 구문 분석하거나 구성 파일이나 레지스트리를 읽어야합니다. 이 작업을 수행하는 데 익숙한 플랫폼 독립적 인 방법은 없습니다. 모든 작업을 실행하려면 Linux, Mac 및 Windows를 코딩해야합니다.

게이트웨이를 포함

How can I determine the IP of my router/gateway in Java?를 참조하십시오, 당신은 ifconfig를 사용하거나이를 얻을뿐만 아니라 ipconfig를 할 수있다. DNS 정보의 경우, Windows에서 ipconfig와 같은 다른 시스템 명령을 호출하거나 Linux 또는 mac에서 /etc/resolv.conf를 구문 분석해야합니다.

0

Java에서 기본 게이트웨이 또는 DNS 서버 주소를 얻는 표준 인터페이스가 현재 없습니다. 쉘 명령이 필요합니다.

0

My way은 다음과 같습니다 때문에 데이터 그램 (UDP)를 사용

try(DatagramSocket s=new DatagramSocket()) 
{ 
    s.connect(InetAddress.getByAddress(new byte[]{1,1,1,1}), 0); 
    return NetworkInterface.getByInetAddress(s.getLocalAddress()).getHardwareAddress(); 
} 

, 그것은 어디서나 연결되지

때문에 포트 번호가 그냥 연결할 수 필요가 없습니다 의미 및 원격 주소 (1.1.1.1) 될 수있다 라우팅 가능. ipconfig의 도움으로

윈도우에서
+0

이것은 항상 기본 게이트웨이를 반환하지는 않습니다. 패킷 라우팅은 여러 요소를 통해 결정됩니다. 그 중 하나는 대상 주소입니다. 기본 게이트웨이가 목적지 주소를 수락하거나 라우팅 할 수없는 경우 패킷은 다른 경로를 통해 전달됩니다.이 경로는 사용 가능한 모든 경로 중 최악의 경로 일 수도 있고 그렇지 않을 수도 있습니다. 네트워크 어댑터 메트릭에 따라 두 번째 최상의 경로 또는 중간에있는 경로 일 수도 있습니다. 전제 조건으로 소프트웨어를 작성하지 마십시오. 전체 비즈니스 상황이 악화됩니다. – specializt

+0

이것은 꽤 독창적입니다. 목적지 주소에 따라 다릅니다. [인터넷에있는 실제 주소] (http://serverfault.com/q/132805/92104)를 사용하여 적어도 유효한 경로를 확보하고 있는지 확인하는 것이 좋습니다. 기본 경로가 아닙니다. –

+0

DNS를 사용하는 경우 여기에 주소 대신 호스트 이름을 사용할 수 있습니다. 'a.root-servers.net'은 항상 존재한다는 보장이 있으며, 여러분의 지역 네트워크에는 존재하지 않을 것입니다. –

1


을 :

import java.awt.Desktop; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URI; 

public final class Router { 

    private static final String DEFAULT_GATEWAY = "Default Gateway"; 

    private Router() { 
    } 

    public static void main(String[] args) { 
     if (Desktop.isDesktopSupported()) { 
      try { 
       Process process = Runtime.getRuntime().exec("ipconfig"); 

       try (BufferedReader bufferedReader = new BufferedReader(
         new InputStreamReader(process.getInputStream()))) { 

        String line; 
        while ((line = bufferedReader.readLine()) != null) { 
         if (line.trim().startsWith(DEFAULT_GATEWAY)) { 
          String ipAddress = line.substring(line.indexOf(":") + 1).trim(), 
            routerURL = String.format("http://%s", ipAddress); 

          // opening router setup in browser 
          Desktop.getDesktop().browse(new URI(routerURL)); 
         } 

         System.out.println(line); 
        } 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

여기에 내가 내 라우터의 기본 게이트웨이 IP 주소를 얻고, 그리고 브라우저에서 열면 내 라우터의 설정 페이지를 참조하십시오.

관련 문제