Adresse IP

mahdi89 Messages postés 90 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
salut les amis j'ai un probleme comment faire pour calculer les nombres des qu'on peut adresser selon le classe de l @ voici le prog l'utilisateur tape une adresse IP puis le programme lui indiquera la classe de cette adresse ainsi que son adresse réseau , masque , et de diffusion.
* # include <stdio.h>
* main ()
* {
* int a,b,c,d;
* printf("saisir adresse IP : ");
* scanf("%d.%d.%d.%d",&a,&b,&c,&d);
* if (a>1 && a<127)
* {printf("\nclasse A");
* printf("\nadresse reseau:%d.0.0.0",a);
* printf("\nadresse masque:255.0.0.0");
* printf("\nadresse diffusion:%d.255.255.255\n",a);
* }
* else if (a>127 && a<192)
* {printf("\nclasse B");
* printf("\nadresse reseau:%d.%d.0.0",a,b);
* printf("\nadresse masque:255.255.0.0");
* printf("\nadresse diffusion:%d.%d.255.255\n",a,b);
* }
* else if (a>192 && a<223)
* {printf("\nclasse C");
* printf("\nadresse reseau:%d.%d.%d.0",a,b,c);
* printf("\nadresse masque:255.255.255.0");
* printf("\nadresse diffusion:%d.%d.%d.255\n",a,b,c);
* }
* else printf("\nadresse non valide\n");
*
* }
A voir également:

3 réponses

skyowl Messages postés 7 Statut Membre 1
 
"Les nombres"? Mais qu'est ce que tu veux caculer exactement?
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Il suffit de faire des puissances de 2.
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
Tout d'abort, remarque sur le code :
# include <stdio.h>
Pas d'espace entre le dièse et include.

main ()
En C, le prototype sans argument est : int main(void)
N'oublie donc pas le : return 0; à la fin du programme.

else if (a>192 && a<223)
La condition a>192 devrait être moins stricte puisque a=192 appartient à cette catégorie.
Et si tu mets donc a>=192, tu peux l'enlever puisque t'es sûr que a sera supérieure ou égale à 192 s'il arrive à cette ligne.
a<223 est également trop stricte. Cette catégorie contient aussi 223.
La condition devrait donc être : else if(a<224)

comment faire pour calculer les nombres
J'imagine que tu parles du nombre de machines. Ceci se fait par rapport au masque de sous-réseaux. Tu convertis les octets en binaire et tu comptes le nombre de bits à 1 consécutifs en partant de la gauche.
Ce nombre élevé au carré - 2 (il faut enlever les adresses de réseau et de broadcast) te donnera le nombre de machines adressables.

Et enfin dernière remarque :
l'utilisateur tape une adresse IP puis le programme lui indiquera la classe de cette adresse ainsi que son adresse réseau , masque , et de diffusion.
La notion de classe n'existe plus. Tu peux très bien avoir le premier octet entre 128 et 192 et avoir un masque /17 au lieu de /16 (CIDR). Tu devrais donc inviter l'utilisateur à rentrer l'IP ET son masque. Aujourd'hui, une IP sans masque n'a aucun sens.

Cdlt
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
La notion de classe n'existe plus
Ha bon ?
Pourquoi en parle-t-on toujours alors ? (notamment sur CCM)
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pourquoi en parle-t-on toujours alors ? (notamment sur CCM)
Pour la même raison que beaucoup mettent void main() au lieu d'int main(void) en C, si tu vois ce que je veux dire ;-)))
Par définition du CIDR, les classes n'existent plus. Et ça date depuis 1994 ! Cela a plusieurs avantages (subnetting possible, meilleure allocation des IP, ...). D'ailleurs les routeurs ne se basent plus depuis longtemps sur les classes.
Cela implique que les masques naturelles n'existent également plus et les sous-réseaux non plus (bien qu'on continue d'en parler). Tout est réseau. Voilà pourquoi une IP sans masque ne veut rien dire.
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299 > Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci de la précision.
Par contre, mes dernières lectures sur le bug an 2000 et an 2038, me font pensé qu'il doit bien rester des matériels considérant encore les classes, c'est peut être pour ça que l'on continue d'en parler.
0