Ho un IP simile al seguente: 12.12.12.12
Sto eseguendo il looping di diversi intervalli IP (nel formato 12.12.12.0/24 (esempio)) e sto provando a vedere se l'IP è in la gamma.
Ho provato vari metodi come inet_addr e il confronto ma non riesco a ottenerlo.
C'è un modo semplice per farlo? Sto usando Windows.L'IP scende nell'intervallo CIDR
risposta
Basta verificare se:
(ip & netmask) == (range & netmask)
È possibile determinare la maschera di rete dal CIDR parametri range/netbits
come segue:
uint32_t netmask = ~(~uint32_t(0) >> netbits);
una conversione 'ntohl' potrebbe essere necessaria prima di fare questo. – KillianDS
@KillianDS: sto presupponendo che il processo di analisi produca un indirizzo nell'ordine dei byte locale, ma hai ragione, è qualcosa da ricontrollare, specialmente dato che "inet_addr" restituisce l'ordine dei byte di rete. –
Vedete qualcosa di sbagliato qui? Sembra stampare per ogni singolo: 'int cidr = atoi (cdrbuf); \t \t unsigned long ulstart = ntohl (inet_addr (clip)); \t \t unsigned long ulcheck = ntohl (inet_addr ("12.12.12.12")); \t \t netmask lunga non firmata = ~ unsigned long (~ 0ULL >> cidr); \t \t if ((ulcheck e maschera di rete) == (CIDR e maschera di rete)) \t \t \t printf ("% s \ n", PCH); ' – seth
Prendere la rappresentazione binaria e azzerare ciò che non corrisponde alla maschera di rete.
Chiarimento: Diciamo che avete la IP a.b.c.d
e volete abbinare a e.f.g.h/i
allora, si può buttare l'IP in un unico numero intero senza segno, uint32_t ip = a<<24 + b<<16 + c<<8 + d
e fare lo stesso con uint32_t range = e<<24 + f<<16 + g<<8 + h
. Ora puoi usare la tua maschera di rete: uint32_t mask = (~0u) << (32-i)
. Ora, puoi semplicemente verificare se è confrontandoli: ip & mask == range & mask
.
L'iterazione proviene evidentemente dal test contro un tutto un casino di gamme. –
@Ben Voigt: Devo averlo perso. Hai ragione. – bitmask
- 1. decimal.TryParse() scende leader "1"
- 2. Maschera di rete per CIDR in Ruby
- 3. Recupera gli IP max/min dall'intervallo CIDR
- 4. Intervallo IP su CIDR in Ruby/Rails?
- 5. Corrispondenza dell'indirizzo IPv6 a una subnet CIDR
- 6. Ottieni l'opposto di un intervallo CIDR
- 7. Travis CI/Pro: intervallo CIDR/IP?
- 8. Intervallo IP alla conversione CIDR in Python?
- 9. Numero di connessioni memcache non scende mai, continua a crescere
- 10. PostgreSQL che espande il cidr in singoli indirizzi
- 11. Calcola CIDR da una maschera di rete specifica - Java
- 12. Conversione dell'indirizzo CIDR in subnet mask e indirizzo di rete
- 13. iOS 8 iPad AVCaptureMovieFileOutput scende/perde/non ottiene traccia audio dopo 13 - 14 secondi di registrazione
- 14. Come convertire CIDR in rete e intervallo di indirizzi IP in C#?
- 15. C'è un modo per abbinare IP con IP + CIDR direttamente dalla query SELECT?
- 16. Microsoft Edge ha bloccato le richieste tra domini inviate a IP nella stessa rete privata CIDR
- 17. Python 3: crea un elenco di possibili indirizzi IP da una notazione CIDR
- 18. algoritmo per trovare reti IPv4 in notazione CIDR tra due indirizzi IPv4
- 19. Generazione di subnet CIDR in blocchi a livello di codice nei modelli CloudFormation (o aggiunta di interi insieme)
- 20. Poiché IPV6 ha bisogno di 128 bit (16 byte), allora perché nel datatype CIDR postgres è presente una memoria di 24 byte (8.1) e 19byte (9.1)?
- 21. ricerca tipo regex in un json con jq
- 22. Impossibile capire perché subnet viene aggiornata
- 23. Come confrontare l'intervallo di indirizzi IP in C#?
- 24. Uso di code esclusive + permanenti, per RabbitMQ
- 25. Come aggiungere un menu a discesa alla barra di navigazione Titolo in iOS
- 26. Bootstrap: in una finestra di dialogo modale, come faccio a espandere il menu a discesa all'esterno della finestra di dialogo?
- 27. Come modificare la configurazione di emacs in Lisp In A Box
- 28. Come sincronizzare i sistemi di coordinate Three.js e HTML/SVG (in particolare con l'asse y)?
- 29. Allineamento immagine alla parte superiore di una cella di una tabella
- 30. Jquery animate bottom problem
correlati: http://stackoverflow.com/questions/1507579/how- can-i-define-that-user-ip-address-is-in-access-range-or-not –
Questo è PHP, come puoi vedere dai tag sto usando C++ – seth