Bonsoir,
Je veux comparer deux adresses ip : l'une d'un paquet et l'autre d'une règle de filtrage qui peut être une plage d'adresses. Je voudrais savoir comment écrire cette fonction en Java
Merci d'avance pour votre aide.
Bonsoir,
Je veux comparer deux adresses ip : l'une d'un paquet et l'autre d'une règle de filtrage qui peut être une plage d'adresses. Je voudrais savoir comment écrire cette fonction en Java
Merci d'avance pour votre aide.
Il faudra être un peu plus explicite car comparer 2 adresses IP (10.59.8.2 et 10.59.8.3 par exemple) c'est comme comparé 2 string, ou 2 entiers...
Tu as un exemple ou un bout de code ou tu bloques ?
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Il faudrait aussi préciser ce que tu comptes utiliser pour filtrer les adresses. Tu comptes utiliser un format type masque réseau (ex: 255.255.0.0) ? Ou bien un filtre personnalisé genre (ex: 192.168.*.1??) ?
oui je veux utiliser dans la règle de filtrage un filtre personnalisé (ex:192.168.1.*/26)
Ok, comme vous l'a très bien dit wax78, comparer deux adresses IP entre elles, c'est vérifier une égalité stricte entre deux chaînes de caractères.
Pour ce qui est du filtrage, on peut utiliser une expression régulière : "192\\.168\\.1\\.(([0-5]\\d?)|(6[0-3]?))"
Attention, ici, je pars du principe que le filtrage que vous donnez "192.168.1.*/26" cible toutes les adresses comprises entre 192.168.1.0 et 192.168.1.63 inclus.
Si je ne me trompes pas dans l'interprétation de votre masque, vérifier cela peut se faire ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 String expression = "192\\.168\\.1\\.(([0-5]\\d?)|(6[0-3]?))"; String adr1_Test = "192.168.1.0"; String adr2_Test = "192.168.1.10"; String adr3_Test = "192.168.1.59"; String adr4_Test = "192.168.1.63"; String adr5_Test = "192.168.1.64"; String adr6_Test = "192.168.1.164"; System.out.println(adr1_Test.matches(expression));//true System.out.println(adr2_Test.matches(expression));//true System.out.println(adr3_Test.matches(expression));//true System.out.println(adr4_Test.matches(expression));//true System.out.println(adr5_Test.matches(expression));//false System.out.println(adr6_Test.matches(expression));//false
Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !
Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
Tout sur les réseaux : https://reseau.developpez.com/cours/
Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
Tout sur le matériel : https://hardware.developpez.com/cours/
Partager