2010-04-13 14 views
6

जावा में आईसीएमपी और ट्रैसरआउट के लिए प्राइमेटिव नहीं हैं। इसे कैसे दूर करें? असल में मैं कोड बना रहा हूं जो * निक्स और विंडोज़ में चलाना चाहिए, और कोड के एक टुकड़े की आवश्यकता है जो दोनों प्लेटफार्मों में चलेगी।जावा में आईसीएमपी और ट्रैसरआउट कैसे करें

उत्तर

4

जावा में ट्रेस रूट कमांड को "कार्यान्वित" करने के लिए मैंने आज लिखा है। मैंने केवल विंडोज़ में परीक्षण किया है, लेकिन इसे लिनक्स में भी काम करना चाहिए हालांकि लिनक्स के लिए कई ट्रैसरआउट टूल्स उपलब्ध हैं, इसलिए संभवतः उन कार्यक्रमों के अस्तित्व के लिए कुछ जांच होने की आवश्यकता है।

public class NetworkDiagnostics{ 
    private final String os = System.getProperty("os.name").toLowerCase(); 

    public String traceRoute(InetAddress address){ 
    String route = ""; 
    try { 
     Process traceRt; 
     if(os.contains("win")) traceRt = Runtime.getRuntime().exec("tracert " + address.getHostAddress()); 
     else traceRt = Runtime.getRuntime().exec("traceroute " + address.getHostAddress()); 

     // read the output from the command 
     route = convertStreamToString(traceRt.getInputStream()); 

     // read any errors from the attempted command 
     String errors = convertStreamToString(traceRt.getErrorStream()); 
     if(errors != "") LOGGER.error(errors); 
    } 
    catch (IOException e) { 
     LOGGER.error("error while performing trace route command", e); 
    } 

    return route; 
} 
+2

स्थिति को os.toLowerCase() में बदला जाना चाहिए। ("जीत") – Hassan

+0

जहां आपने ** convertStreamToString ** विधि का उपयोग किया था? – Omore

+0

@ और आप पूछ रहे हैं कि यह कहां परिभाषित किया गया है? मुझे लगता है कि मैंने लिखा एक कस्टम तरीका है। मेरे पास कोड तक पहुंच नहीं है इसलिए आपको यह समझना होगा कि इसे कैसे कार्यान्वित किया जाए। यदि आप करते हैं, तो कृपया इसे शामिल करने के लिए मेरा उत्तर अपडेट करें; आपको ऐसा करने के लिए अंक मिलेंगे। –

संबंधित मुद्दे