TP N°3 : Adressage IP @ IP Les classes d’@ IP http://chettibi.e-monsite.com/ TP N°3 : Adressage IP @ IP Les classes d’@ IP
Bloc d’adresses Bloc d’adresses IP = des @ IP consécutives à un sous-réseau est associé un bloc d’adresse IP avec un masque 205.16.37.32 / 28
Première adresse = @ sous-réseau (réservée) Dernière adresse = @ Diffusion dans le sous-réseau (réservée) Entre les deux: des @ attribuables aux hôtes (machines)
Masque Il permet de délimiter les adresses appartenant au même bloc ( sous-réseau) Un masque tient Sur 32 bits dont les plus à gauches sont des 1 Et les plus à droite sont à 0. Dans notre exemple (masque en notation décimale): 255.255.255.240
En binaire 11111111. 11111111. 11111111. 11110000 Les 1 : NET_ID (Identificateur du réseau) Les 0 : HOST_ID (Identificateur d’hôte) Combien d’adresses sont disponibles sur ce réseau ? 2^4 = 16 { 0000 …………. 1111}
Comment exploiter Le Masque ? Pour obtenir l'adresse réseau, il suffit de faire un ET logique entre une adresse IP du bloc avec le masque (format binaire).
Une @IP : 205.16.37.39 11001101000100000010010100100111 Masque: 255.255.255.240 11111111. 11111111. 11111111. 11110000
Comment exploiter Le Masque ? Pour obtenir l'adresse réseau, il suffit de faire un ET logique entre une adresse IP du bloc avec le masque (format binaire). 205.16.37.32
Comment exploiter Le Masque ? Pour obtenir l'adresse de diffusion, il suffit de faire un OU logique entre une adresse IP du bloc et le complément du masque. 205.16.37.47
En Java… En plus des opérations arithmétiques, Java offre ce que l'on appelle des opérations bit à bit travaillant sur les séquences de bits représentant les entiers
Créer un programme avec une GUI qui ressemble à: Application Créer un programme avec une GUI qui ressemble à:
Tester les octets : @IP et le Masque aussi…
Fenêtre Dialog Design this Container
Ajouter des composants à Dialog + Label + Button
Code qui permet de calculer @ réseau private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { int aip1,msq1, aip2,msq2,aip3,msq3,aip4,msq4; aip1 = Integer.parseInt(jTextField1.getText()); msq1= Integer.parseInt(jTextField5.getText()); jTextField9.setText(String.valueOf(aip1&msq1)); ));
Code qui permet de calculer @ réseau aip2=Integer.parseInt(jTextField2.getText()); msq2=Integer.parseInt(jTextField6.getText()); jTextField10.setText(String.valueOf(aip2&msq2)); ));
Code qui permet de calculer @ réseau aip3=Integer.parseInt(jTextField3.getText()); msq3=Integer.parseInt(jTextField7.getText()); jTextField11.setText(String.valueOf(aip3&msq3)); aip4=Integer.parseInt(jTextField4.getText()); msq4=Integer.parseInt(jTextField8.getText()); jTextField12.setText(String.valueOf(aip4&msq4));));
Ce qu’on obtient
Code qui permet de calculer @Diffusion jTextField13.setText(String.valueOf(aip1 | (256 + (~ msq1)))); jTextField14.setText(String.valueOf(aip2|(256+(~msq2)))); jTextField15.setText(String.valueOf(aip3|(256+(~msq3)))); jTextField16.setText(String.valueOf(aip4|(256+(~msq4))));
Ajouter le Test // placer tout les get en haut ….. if ((aip1 > 255)||(aip1<0)||(aip2> 255)||(aip2<0)||(aip3> 255)||(aip3<0)||(aip4> 255)||(aip4<0)||(msq1 > 255)||(msq1<0)||(msq2> 255)||(msq2<0)||(msq3> 255)||(msq3<0)||(msq4> 255)||(msq4<0)) { jDialog1.setVisible(true); }else{ // reste du code }
Code pour le bouton Recommencer private void jButton2MouseClicked(java.awt.event.MouseEvent evt) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jTextField5.setText(""); jTextField6.setText(""); jTextField7.setText(""); jTextField8.setText(""); jDialog1.setVisible(false); }