2011-05-10 11 views
6

में डिफ़ॉल्ट गेटवे प्राप्त करें मैं जावा का उपयोग कर स्थानीय मशीन के लिए डिफ़ॉल्ट गेटवे लाने के लिए चाहता हूं। मुझे पता है कि डॉस या खोल कमांड को निष्पादित करके इसे कैसे प्राप्त किया जाए, लेकिन क्या लाने का कोई और तरीका है? प्राथमिक और माध्यमिक डीएनएस आईपी लाने की भी आवश्यकता है।जावा

उत्तर

0

ऐसा करने का कोई आसान तरीका नहीं है। आपको स्थानीय सिस्टम कमांड को कॉल करना होगा और आउटपुट को पार्स करना होगा, या कॉन्फ़िगरेशन फाइल या रजिस्ट्री को पढ़ना होगा। कोई मंच स्वतंत्र तरीका नहीं है कि मुझे यह काम करने के बारे में पता है - यदि आप उन सभी पर चलना चाहते हैं तो आपको लिनक्स, मैक और विंडोज़ के लिए कोड करना होगा।

How can I determine the IP of my router/gateway in Java?

कि प्रवेश द्वार को शामिल किया गया देखें, और आप ifconfig का उपयोग करें या रूप में अच्छी तरह ipconfig इस प्राप्त करने के लिए कर सकता है। DNS जानकारी के लिए, आपको एक अलग सिस्टम कमांड जैसे कि Windows पर ipconfig या Linux या mac पर parse /etc/resolv.conf पर कॉल करना होगा।

0

डिफ़ॉल्ट गेटवे या DNS सर्वर पते प्राप्त करने के लिए जावा में वर्तमान में कोई मानक इंटरफ़ेस नहीं है। आपको शेल कमांड की आवश्यकता होगी।

0

My way है:

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) हो सकता है पहुंच योग्य होना जरूरत नहीं, बस रॉटेबल।

+0

यह हमेशा डिफ़ॉल्ट गेटवे नहीं लौटाएगा, जो पूरी तरह से बनाया गया है। पैकेट रूटिंग कई कारकों के माध्यम से निर्धारित की जाती है, उनमें से एक गंतव्य पता है। यदि आपका डिफ़ॉल्ट गेटवे आपके गंतव्य पते को स्वीकार/रूट नहीं कर सकता है तो आपका पैकेट किसी अन्य मार्ग के माध्यम से वितरित किया जाएगा, जो सभी उपलब्ध मार्गों में से सबसे खराब हो सकता है या नहीं; आपके नेटवर्क एडाप्टर मीट्रिक के आधार पर यह दूसरा सबसे अच्छा मार्ग या बीच में कुछ भी हो सकता है। कृपया धारणाओं के साथ सॉफ़्टवेयर न लिखें, जो पूरे व्यवसाय की स्थिति को और खराब कर देता है। – specializt

+0

यह बहुत सरल है। यह गंतव्य पते पर निर्भर करता है, यद्यपि; यह सुनिश्चित करने के लिए कि आप कम से कम * एक * वैध मार्ग प्राप्त कर रहे हैं, भले ही [वास्तविक जानकारी जो इंटरनेट पर बाहर है] (http://serverfault.com/q/132805/92104) का उपयोग करना बेहतर हो सकता है यह डिफ़ॉल्ट मार्ग नहीं है। –

+0

यदि आपके पास DNS काम कर रहा है, तो आप यहां पते के बजाय होस्टनाम का उपयोग कर सकते हैं; 'a.root-server.net' हमेशा मौजूद होने की गारंटी है, और आपके स्थानीय नेटवर्क में होने की संभावना नहीं है। –

1


Windows में ipconfig की मदद से:

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 पता हो रही है, और एक ब्राउज़र में खोलने यह मेरी रूटर के सेटअप पृष्ठ को देखने के लिए।