Adresses IP

On définit une classe gérant une adresse IPv4.

On rappelle qu’une adresse IPv4 est une adresse de longueur 4 octets, notée en décimale à point, en séparant chacun des octets par un point. On considère un réseau privé avec une plage d’adresses IP de 192.168.0.0 à 192.168.0.255.

On considère que les adresses IP saisies sont valides.

Les adresses IP 192.168.0.0 et 192.168.0.255 sont des adresses réservées.

Le code ci-dessous implémente la classe AdresseIP.

Compléter le code ci-dessous et instancier trois objets : adresse1, adresse2, adresse3 avec respectivement les arguments suivants

'192.168.0.1', '192.168.0.2', '192.168.0.0'

Exemples

🐍 Console Python
>>> adresse1.liste_octets()
[192, 168, 0, 1]
>>> adresse1.est_reservee()
False
>>> adresse3.est_reservee()
True
>>> adresse2.adresse_suivante().adresse # acces valide à adresse
# ici car on sait que l'adresse suivante existe
'192.168.0.3'
Compléter le code ci-dessous

###
# Testsbksl-nlassert adresse1.adresse == '192.168.0.1'bksl-nlassert adresse2.adresse == '192.168.0.2'bksl-nlassert adresse3.adresse == '192.168.0.0'bksl-nlbksl-nlassert adresse1.listepy-undoctets() == [192, 168, 0, 1]bksl-nlassert adresse1.estpy-undreservee() is Falsebksl-nlassert adresse3.estpy-undreservee() is Truebksl-nlassert adresse2.adressepy-undsuivante().adresse == '192.168.0.3'bksl-nlbksl-nl# Autres testsbksl-nladresse4 = AdresseIP('192.168.0.10')bksl-nlassert adresse4.adressepy-undsuivante().adresse == '192.168.0.11'bksl-nlassert adresse4.listepy-undoctets() == [192, 168, 0, 10]bksl-nlassert adresse4.estpy-undreservee() is Falsebksl-nlbksl-nl 5/5
class AdresseIP:bksl-nl def py-undpy-undinitpy-undpy-und(self, adresse):bksl-nl self.adresse = ... bksl-nlbksl-nl def listepy-undoctets(self):bksl-nl """renvoie une liste de nombres entiers,bksl-nl la liste des octets de l'adresse IP"""bksl-nl # Note : split découpe la chaine de caractères bksl-nl # en fonction du séparateurbksl-nl return [int(i) for i in self.adresse.split(".")]bksl-nlbksl-nl def estpy-undreservee(self):bksl-nl """renvoie True si l'adresse IP est une adressebksl-nl réservée, False sinon"""bksl-nl reservees = [ ... ] bksl-nl return ... bksl-nlbksl-nl def adressepy-undsuivante(self):bksl-nl """renvoie un objet de AdresseIP avec l'adressebksl-nl IP qui suit l'adresse self si elle existe et None sinon"""bksl-nl octets = ... bksl-nl if ... == 254: bksl-nl return Nonebksl-nl octetpy-undnouveau = ... + ... bksl-nl return AdresseIP('192.168.0.' + ...)bksl-nlbksl-nlbksl-nladresse1 = ...bksl-nladresse2 = ...bksl-nladresse3 = ...bksl-nlbksl-nl# Testsbksl-nlassert adresse1.listepy-undoctets() == [192, 168, 0, 1]bksl-nlassert adresse1.estpy-undreservee() is Falsebksl-nlassert adresse3.estpy-undreservee() is Truebksl-nlassert adresse2.adressepy-undsuivante().adresse == '192.168.0.3'bksl-nlbksl-nlclass AdresseIP:bksl-nl def py-undpy-undinitpy-undpy-und(self, adresse):bksl-nl self.adresse = adresse bksl-nlbksl-nl def listepy-undoctets(self):bksl-nl """renvoie une liste de nombres entiers,bksl-nl la liste des octets de l'adresse IP"""bksl-nl # Note : split découpe la chaine de caractères bksl-nl # en fonction du séparateurbksl-nl return [int(i) for i in self.adresse.split(".")]bksl-nlbksl-nl def estpy-undreservee(self):bksl-nl """renvoie True si l'adresse IP est une adressebksl-nl réservée, False sinon"""bksl-nl reservees = [ '192.168.0.0', '192.168.0.255' ] bksl-nl return self.adresse in reservees bksl-nlbksl-nl def adressepy-undsuivante(self):bksl-nl """renvoie un objet de AdresseIP avec l'adressebksl-nl IP qui suit l'adresse self si elle existe et None sinon"""bksl-nl octets = self.listepy-undoctets() bksl-nl if octets[3] == 254: bksl-nl return Nonebksl-nl octetpy-undnouveau = octets[3] + 1 bksl-nl return AdresseIP('192.168.0.' + str(octetpy-undnouveau))bksl-nlbksl-nlbksl-nlbksl-nladresse1 = AdresseIP('192.168.0.1')bksl-nladresse2 = AdresseIP('192.168.0.2')bksl-nladresse3 = AdresseIP('192.168.0.0')bksl-nlbksl-nl