दिलचस्प पोस्ट
बिटमैप को ImageView से जुड़ा हुआ है "कम अवस्थापन" और परिवर्तन योग्य डिफ़ॉल्ट तर्क ओपनएसएसएल के साथ मेक्रिप्ट को बदलें नो जावास्क्रिप्ट जांच स्क्रिप्ट + रीडायरेक्ट कैसे जावा में एक फ़ोल्डर बनाने के लिए? मैं csv के लिए 'for' लूप क्यों नहीं दोहरा सकता हूं। रीडर? (अजगर) प्रमाणीकरण अनुरोध घटना अमान्य redirect_uri: एप्लिकेशन कॉन्फ़िगरेशन द्वारा दिए गए यूआरएल की अनुमति नहीं है क्या एंड्रॉइड में एक पैकेज को प्रोग्राम की स्थापना रद्द करना संभव है? ब्रॉडकास्ट रिसीवर आंतरिक कक्षा के रूप में "आईडी को हल नहीं किया जा सकता है या फ़ील्ड नहीं है" त्रुटि? "ऑपरेटर बूल () कॉन्स्ट" का क्या अर्थ है टी-एसक्यूएल एक्सओआर ऑपरेटर GitHub में दूरस्थ परिवर्तन कैसे मर्ज करें? एक गैर रेखीय colormap / colorbar उत्पन्न करने के लिए कैसे?

जावा का उपयोग करते हुए समान नेटवर्क (सबनेट) से जुड़े आईपी की सूची कैसे प्राप्त करें I

जावा के उपयोग से मेरे समान सबनेट से जुड़े उपकरणों के लिए मैं आईपी पते की सूची कैसे प्राप्त करूं?

Solutions Collecting From Web of "जावा का उपयोग करते हुए समान नेटवर्क (सबनेट) से जुड़े आईपी की सूची कैसे प्राप्त करें I"

यह तब काम करना चाहिए जब आपके नेटवर्क पर होस्ट आईसीएमपी संकुल (पिंग) (> जेडीके 5) पर प्रतिक्रिया दें:

public void checkHosts(String subnet){ int timeout=1000; for (int i=1;i<255;i++){ String host=subnet + "." + i; if (InetAddress.getByName(host).isReachable(timeout)){ System.out.println(host + " is reachable"); } } } 

इस तरह से एक सबनेट (192.168.0.1-254) के लिए विधि का आह्वान करें:

 checkHosts("192.168.0"); 

यह परीक्षण नहीं किया लेकिन इस तरह थोड़े काम करना चाहिए जाहिर है यह केवल आईपी पते के अंतिम बाइट में 254 मेजबानों की जांच करता है …

चेक:

http://download-llnw.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29 http://blog.taragana.com/index.php/archive/how करने वाली do-ICMP-पिंग-इन-जावा-JDK-15 और इसके बाद के संस्करण /

उम्मीद है कि मदद की

LAN पर सक्रिय पते दिखाता है

 public static void main(String[] args) { try { Enumeration nis = NetworkInterface.getNetworkInterfaces(); while(nis.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) nis.nextElement(); Enumeration ias = ni.getInetAddresses(); while (ias.hasMoreElements()) { InetAddress ia = (InetAddress) ias.nextElement(); System.out.println(ia.getHostAddress()); } } } catch (SocketException ex) { Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); } } 

उत्पादन

 127.0.0.1 0:0:0:0:0:0:0:1 172.128.1.102 

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

पिंग्स का जवाब दे रहे आईपी पतों की एक सूची प्राप्त करें

मैंने इस कोड को विंडोज 7 64 बिट के लिए जावा jdk1.8.0_25 का उपयोग कर बनाया है।

चरण 1: विंडो के लिए एनएमएपी डाउनलोड करें:

http://nmap.org/book/inst-windows.html

चरण 2: सुनिश्चित करें कि आप इन परिणामों को कमांडलाइन या पावरशेल्ड पर प्राप्त कर सकते हैं:

 C:\Users\eric.leschinski>Nmap -sn -oG ip.txt 13.10.23.1-255 Starting Nmap 6.47 ( http://nmap.org ) at 2014-11-13 15:47 Eastern Standard Time Nmap scan report for 13.10.23.1 Host is up (0.00s latency). Nmap scan report for 13.10.23.11 Nmap done: 255 IP addresses (2 hosts up) scanned in 5.53 seconds C:\Users\eric.leschinski> 

चरण 3: एक जावा प्रोग्राम बनाएं और इस विधि को शामिल करें:

 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; public ArrayList<String> getIPAddressList(){ ArrayList<String> addresses = new ArrayList<String>(); try { Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("nmap -sn -oG ip.txt 13.150.23.1-255"); BufferedReader input = new BufferedReader( new InputStreamReader(pr.getInputStream())); String line = null; while((line=input.readLine()) != null) { System.out.println(line); if (line.contains("Nmap scan report for")){ String[] elements = line.split(" "); int end = elements.length-1; String ip_address = elements[end]; String line2 = input.readLine(); if (line2.contains("Host is up")){ addresses.add(ip_address); } } } int exitVal = pr.waitFor(); System.out.println("Exited with error code "+exitVal); } catch(Exception e){ e.printStackTrace(); System.exit(0); } return addresses; } 

चरण 4, आउटपुट का मूल्यांकन करें

लौटे की सामग्री को प्रिंट करें यह 13.150.23.1 से 13.150.23.255 के साथ आईपी पते द्वारा आईपी पते की एक सूची है

यह कितनी तेजी से जाता है?

255 पतों को स्कैन करने के लिए लगभग 4 सेकंड लगे

जावा 1.5 के बाद से java.net.InetAddress में एक पिंग-जैसी विधि है: सार्वजनिक बूलियन है रीचबल (इंट टाइमआउट)। आप इसे अपने सबनेट में सभी आईपी पते पर पुनरावृति करने के लिए इस्तेमाल कर सकते हैं … java-doc

यदि आप नेटवर्क से जुड़े सभी मेजबानों की एक सूची का मतलब चाहते हैं, तो मुझे लगता है कि काम करने की गारंटी दी गई एकमात्र तरीका आईपी पते की सूची के माध्यम से कदम उठाना है और उन सभी को पिंग करना है

उसने कहा, अगर आप कुछ अधिक विशिष्ट की तलाश कर रहे हैं, तो ऐसा कुछ हो सकता है जिसे आप देख सकते हैं (जैसे कि आरएमआई रजिस्ट्री ( LocateRegistry.getRegistry(host, port).list() )।

साथ ही, यदि आप चाहते हैं कि किसी दिए गए होस्ट के सभी आईपी पते हों, तो NetworkInterface.getNetworkInterfaces() पर नजर डालें।

यहां की समस्याओं में से एक यह है कि "लैन" और "कनेक्टेड" शब्द का कोई भी अर्थ टीसीपी / आईपी में नहीं है क्लास डी सबनेट में सभी मेजबानों पर कॉल करने की सुझाई गई तकनीक है (संभव है) यदि आपका लैन क्लास-डी सबनेट में ठीक से मेल खाती हो तो काम कर सकता है

आप संबा को देखकर बेहतर हो सकते हैं, जो लैन के सदस्यों को एसएमबी के माध्यम से पूछताछ कर सकते हैं, इसलिए कम से कम आप तकनीक का उपयोग करेंगे, जिसका प्रयोग आप लैन के लिए करना चाहते हैं।