2010-01-03 14 views
9

मैं एक प्रोग्राम लिख रहा हूं जहां आप कनेक्ट करते हैं, विभिन्न कारणों से, LAN में अन्य कंप्यूटरों के लिए। हालांकि, कई कंप्यूटरों (बट में दर्द) के लिए आईपी पता इनपुट करने के बजाय, मैं सोच रहा था कि लैन में सभी कंप्यूटरों के आईपी पते सूचीबद्ध करने का कोई तरीका है या नहीं। मैंने पूरे दिन शोध किया है, और अभी तक कुछ भी उपयुक्त नहीं मिला है। क्या ऐसा इसलिए है क्योंकि इस तरह का कुछ भी अस्तित्व में नहीं है? अग्रिम धन्यवाद।एक लैन से जुड़े सभी कंप्यूटरों के आईपी पते की सूची

संपादित करें: ऐसा लगता है कि इस पोस्ट के कई विचारों के साथ, मुझे अपना वास्तविक समाधान पोस्ट करना चाहिए। आम तौर पर, लैन पर कंप्यूटर आईपी पते के लिए नामकरण सम्मेलन समान होते हैं। उदाहरण 1 9 2.168.2। *, * किसी भी वैध संख्या के साथ प्रतिस्थापित किया जा रहा है। मेरा प्रोग्राम आईपी पता का पता लगाता है, इसे उपयोगकर्ता को प्रदर्शित करता है, फिर आईपी के पहले 3 ब्लॉक के लिए पूछता है। इसके बाद यह अनुक्रमिक रूप से दिए गए आईपी नामकरण सम्मेलन में 200 तक स्कैन करता है और प्रतिक्रिया के लिए प्रतीक्षा कर रहा है। कोई प्रतिक्रिया नहीं, कोई कंप्यूटर नहीं। एक बार आईपी के साथ आप जो भी कर सकते हैं वह सब कुछ कर सकता है जब उसे पता चलता है कि उसके पीछे एक कंप्यूटर है।

+0

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

+1

'एआरपीइंग' देख सकते हैं, एकमात्र क्रॉस-प्लेटफॉर्म और फ़ायरवॉल-डिफेंसिबल समाधान है। यदि आप विंडोज बॉक्सन तक सीमित हैं तो BlueRaja's WNetEnumResource() दृष्टिकोण उचित है। स्कैनिंग/एनएमएपी दृष्टिकोणों में होस्ट-आधारित फ़ायरवॉल के साथ बहुत सारे ड्रैगन हैं। एक जादू बुलेट/एपीआई कॉल नहीं है। Iphelper API की SendARP() आपकी सबसे अच्छी शर्त है: http://msdn.microsoft.com/en-us/library/aa366358%28VS.85%29.aspx –

+0

क्यों नहीं 254? (बड़े सबनेट में 255) – Deanna

उत्तर

6

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

इनके लिए स्रोत कोड ढूंढना मुश्किल नहीं है और उन्हें सी # में अनुवाद करना मुश्किल नहीं है। ping, arping। वैकल्पिक रूप से, आप केवल कमांड प्रॉम्प्ट पर खोलें और ping निष्पादित करें और फिर परिणामों को पार्स करें।

+0

असल में, 'System.Net.NetworkInformation.Ping' को चाल चलनी चाहिए। सी से कुछ भी अनुवाद करने की जरूरत नहीं है – GeReV

7

1) सबनेट मास्क पढ़ें और उस सबनेट मास्क में सभी आईपी पतों की गणना करें। फिर आप सभी वैध आईपी पते सूचीबद्ध करने के लिए उपयोगकर्ता आईसीएमपी पिंग (मानक पिंग) या एआरपी पिंग कर सकते हैं। एआरपी पिंग एक सबनेट सेटिंग में बहुत विश्वसनीय है।

2) आप सभी मेजबानों

nmap -nsP 192.168.10.1/254 | grep ^Host 
0

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

2

कोई होस्ट खोज उपकरण यहां आपकी सहायता कर सकता है। विशेष रूप से Nmap निश्चित रूप से आपको यह जानकारी देगा हालांकि यह इस स्थिति में अधिक हो सकता है। "पिंग स्कैन" के लिए Google और आपको कुछ उपयोगी परिणाम मिलना चाहिए।

+3

(+1) प्रक्रिया कॉल के माध्यम से एनएमएपी का उपयोग करें और परिणामों को पार्स करें। –

2

WNetOpenEnum() और WNetEnumResource(), here देखें।

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