मेरे पास एक आईपी है: 12.12.12.12
मैं विभिन्न आईपी श्रेणियों (12.12.12.0/24 (उदाहरण) में) प्रारूप के माध्यम से लूपिंग कर रहा हूं, और यह देखने की कोशिश कर रहा हूं कि आईपी चालू है या नहीं क्षेत्र।
मैंने विभिन्न विधियों जैसे कि inet_addr और तुलना करने की कोशिश की है लेकिन मुझे यह प्रतीत नहीं होता है।
क्या ऐसा करने का कोई आसान तरीका है? मैं विंडोज का उपयोग कर रहा हूँ।आईपी सीआईडीआर रेंज में
उत्तर
बस परीक्षण करते हैं कि:
(ip & netmask) == (range & netmask)
आप नेटमास्क निर्धारित कर सकते हैं से सीआईडीआर पैरामीटर range/netbits
इस प्रकार है:
uint32_t netmask = ~(~uint32_t(0) >> netbits);
एक 'ntohl' रूपांतरण की आवश्यकता हो सकती है। – KillianDS
@ किलियनडीएस: मुझे लगता है कि पार्सिंग प्रक्रिया स्थानीय बाइट ऑर्डर में एक पता उत्पन्न करती है, लेकिन आप सही हैं, यह दोबारा जांच करने के लिए कुछ है, खासकर जब से 'inet_addr' नेटवर्क बाइट ऑर्डर देता है। –
क्या आप यहां कुछ गलत देखते हैं? हर एक के लिए प्रिंट करने लगता है: 'int cidr = atoi (cdrbuf); \t \t अहस्ताक्षरित लंबे ulstart = ntohl (inet_addr (क्लिप)); \t \t अहस्ताक्षरित लंबे ulcheck = ntohl (inet_addr ("12.12.12.12")); \t \t अहस्ताक्षरित लंबे नेटमास्क = ~ अहस्ताक्षरित लंबे (~ 0ULL >> CIDR); \t \t अगर ((ulcheck और नेटमास्क) == (CIDR और नेटमास्क)) \t \t \t printf ("% s \ n", PCH); ' – seth
द्विआधारी प्रतिनिधित्व ले लो और बाहर शून्य क्या अपने नेटवर्क मुखौटा मिलान नहीं है।
स्पष्टीकरण: मान लीजिए कि आप आईपी a.b.c.d
है और e.f.g.h/i
करने के लिए इसे फिर से मेल करना चाहते हैं, तो आप एक अहस्ताक्षरित पूर्णांक, uint32_t ip = a<<24 + b<<16 + c<<8 + d
में आईपी फेंक और uint32_t range = e<<24 + f<<16 + g<<8 + h
साथ भी ऐसा ही कर सकते हैं। अब आप अपने नेटवर्क मास्क का उपयोग कर सकते हैं: uint32_t mask = (~0u) << (32-i)
। अब, आप आसानी से जांच सकते हैं कि ip
range
की तुलना करके "ip & mask == range & mask
" है।
यात्रा जाहिर एक के खिलाफ परीक्षण से आता है श्रेणियों की पूरी गड़बड़ी। –
@ बेन वोगेट: मुझे इसे याद करना होगा। आप सही हे। ऐसा करने से पहले – bitmask
- 1. सीआईडीआर को सी # में नेटवर्क और आईपी एड्रेस रेंज में कैसे परिवर्तित करें?
- 2. आईपी रेंज
- 3. सी # में आईपी एड्रेस रेंज की तुलना कैसे करें?
- 4. पायथन 3: सीआईडीआर नोटेशन
- 5. आईपी + सीआईडीआर के साथ आईपी से सीधे चयन क्वेरी से मिलान करने का कोई तरीका है?
- 6. सीआईडीआर/आईपी सेट करना ताकि कोई भी इसे किसी भी आईपी से एक्सेस कर सके?
- 7. आईपी रेंज का उपयोग कर सभी आईपी का संदर्भ कैसे लें XX.XX.XX.XX/24
- 8. मैं प्रारंभ और अंत आईपी पता दिए गए आईपी एड्रेस रेंज कैसे उत्पन्न करूं?
- 9. रेंज
- 10. रेंज
- 11. रेंज
- 12. रेंज
- 13. रेंज
- 14. जावा में रेंज लुकअप
- 15. जावास्क्रिप्ट/jQuery में रेंज?
- 16. एरलांग में रेंज
- 17. देखते हुए आईपी के एक फ्लैट फ़ाइल रेंज और मैपिंग, एक शहर को खोजने के एक आईपी
- 18. एक्सेल से रेंज चर में एक रेंज कैसे स्टोर करें?
- 19. इंटीजर रेंज में फ़्लोट रेंज को कनवर्ट/क्वांटिज़ करें
- 20. आईपी
- 21. आईपी
- 22. आईपी
- 23. आईपी
- 24. पोस्टग्रेज़ में एक रेंज बनाएं
- 25. जीडीबी में मेमोरी रेंज देखें?
- 26. रेंज नंबर
- 27. आईओएस: रेंज
- 28. mySQL रेंज
- 29. थोड़ा रेंज
- 30. आरजीबी रेंज?
संबंधित: http://stackoverflow.com/questions/1507579/how- कर सकते हैं-ए-निर्धारित-कि-उपयोगकर्ता के आईपी पते का-है-इन-सुलभ दूरी या नहीं –
पीएचपी है यही कारण है कि, जैसा कि आप टैग मैं उपयोग कर रहा हूँ से देख सकते हैं सी ++ – seth