Trouver les erreurs :
-ligne 8 ( erreurs en ajout argc et argv)
correrction : int main( int argc , char**argv)
-ligne 13 (erreurs c'est le domaine de la socket)
correction : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14 ( erreur c'est les "" dans function perror , & 1 dans function exit )
correction : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 : ( erreur c 'est AF_UNIX)
correction : serv_addr.sin_family = AF_INET;
ligne 17 : (erreur c 'est htons (argv[1]);
correction : (atoi (argv[1]));
ligne 17 .1 : remarque accept vient aprés le bind , pas avant le bind
17.2 (erreur dand function perror , & exit(1) & le point firgule )
ligne 18 : (erreur exit (1) & point firguile)
correction ( 17.1 + 17.2 + 18 ) :
17.1 if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
18.ss = accept(s, (struct sockaddr*)&cli_addr, &sizeof(cli_addr));
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19 (erreur socket s , sizeof(data)
correction : read ( ss , &nbr , sizeof(nbr) , 0 );
-ligne 21 (erreur socket s )
correction : write ( ss , &nbr , sizeof ( nbr),0);
ligne 22 : ( en ajoute close (ss); )
correrction : int main( int argc , char**argv)
-ligne 13 (erreurs c'est le domaine de la socket)
correction : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14 ( erreur c'est les "" dans function perror , & 1 dans function exit )
correction : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 : ( erreur c 'est AF_UNIX)
correction : serv_addr.sin_family = AF_INET;
ligne 17 : (erreur c 'est htons (argv[1]);
correction : (atoi (argv[1]));
ligne 17 .1 : remarque accept vient aprés le bind , pas avant le bind
17.2 (erreur dand function perror , & exit(1) & le point firgule )
ligne 18 : (erreur exit (1) & point firguile)
correction ( 17.1 + 17.2 + 18 ) :
17.1 if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
18.ss = accept(s, (struct sockaddr*)&cli_addr, &sizeof(cli_addr));
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19 (erreur socket s , sizeof(data)
correction : read ( ss , &nbr , sizeof(nbr) , 0 );
-ligne 21 (erreur socket s )
correction : write ( ss , &nbr , sizeof ( nbr),0);
ligne 22 : ( en ajoute close (ss); )
-Ligne ( 8 ) : errure dans la fonction principale 'main()'et manque des paramettre de ce fonction .
correction : int main(int argc, char *argv[])
-Ligne (13 ) : vous utilisez 'AF_UNIX' dans la fonction socket, alors que vous devriez probablement utiliser 'AF_INET' pour une adresse Internet.
correction : s = socket(AF_INET, SOCK_DGRAM, 0);
-Ligne (15 ) : La valeur de 'serv_addr.sin_family' est définie à 'AF_UNIX', mais le code utilise ensuite des fonctions qui sont spécifiques à 'AF_INET'. Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
correction : serv_addr.sin_family = AF_INET;
-ligne (16 ) : vous devez utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
correction : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-ligne (17 ) : htons nécessite un entier court non signé , donc il faut convertir argv[1] en un entier avant de l'utiliser.
correction : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne (17.1 ) : il ya un erreur dans lordre de accepte et bind.
correction : il faut que Attribution de l'adresse au socket avec 'bind()' va etre Aprés de Acceptation de la connexion entrante avec 'accept()'.
-ligne (17.1 ) : il ya un erreur dans 'accepte()' le point fergule dans les parametre .
correction : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
-ligne (17.2 ) : il manque le point fergule dans la foction 'exit()'.
correction : exit(1);
-ligne (18 ) : erreur das l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
correction : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
-ligne (18 ) : il manque le point fergule dans la foction 'exit()'.
correction : exit(1);
-ligne (19 ) : erreur das l'appel à la fonction 'read()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
correction : read(ss, &nbr, sizeof(nbr));
-ligne (21 ) : erreur das l'appel à la fonction 'write()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
correction : write(ss, &nbr, sizeof(nbr));
-ligne (22 ) : close prend un descripteur de fichier, pas un socket.
correction : close(ss);
correction : int main(int argc, char *argv[])
-Ligne (13 ) : vous utilisez 'AF_UNIX' dans la fonction socket, alors que vous devriez probablement utiliser 'AF_INET' pour une adresse Internet.
correction : s = socket(AF_INET, SOCK_DGRAM, 0);
-Ligne (15 ) : La valeur de 'serv_addr.sin_family' est définie à 'AF_UNIX', mais le code utilise ensuite des fonctions qui sont spécifiques à 'AF_INET'. Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
correction : serv_addr.sin_family = AF_INET;
-ligne (16 ) : vous devez utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
correction : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-ligne (17 ) : htons nécessite un entier court non signé , donc il faut convertir argv[1] en un entier avant de l'utiliser.
correction : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne (17.1 ) : il ya un erreur dans lordre de accepte et bind.
correction : il faut que Attribution de l'adresse au socket avec 'bind()' va etre Aprés de Acceptation de la connexion entrante avec 'accept()'.
-ligne (17.1 ) : il ya un erreur dans 'accepte()' le point fergule dans les parametre .
correction : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
-ligne (17.2 ) : il manque le point fergule dans la foction 'exit()'.
correction : exit(1);
-ligne (18 ) : erreur das l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
correction : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
-ligne (18 ) : il manque le point fergule dans la foction 'exit()'.
correction : exit(1);
-ligne (19 ) : erreur das l'appel à la fonction 'read()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
correction : read(ss, &nbr, sizeof(nbr));
-ligne (21 ) : erreur das l'appel à la fonction 'write()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
correction : write(ss, &nbr, sizeof(nbr));
-ligne (22 ) : close prend un descripteur de fichier, pas un socket.
correction : close(ss);
1)Ligne 8 : errure dans la fonction principale 'main()' ajout argc et argv
alors int main(int argc, char *argv[])
2)Ligne 13 :erreurs c'est le domaine de la socket
alors utiliser 'AF_INET' pour une adresse Internet s = socket(AF_INET, SOCK_DGRAM,0);
3)Ligne 15 :Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
alors serv_addr.sin_family = AF_INET;
4)ligne 16 : utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
alors serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
5)ligne 17 : htons nécessite un entier court non signé
alors : serv_addr.sin_port = htons(atoi(argv[1]));
6)ligne 17.1 : accept vient aprés le bind et il ya un erreur dans 'accepte()' le point fergule dans les parametre
alors : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
7)ligne 17.2 : 'exit()'.
alors: exit(1);
8)ligne 18 : erreur das l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
alors : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
9)ligne 18 : il manque le point 'exit()'.
alors : exit(1);
10)ligne 19 : erreur das l'appel à la fonction 'read()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : read(ss, &nbr, sizeof(nbr));
11)ligne 21 : erreur das l'appel à la fonction 'write()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : write(ss, &nbr, sizeof(nbr));
12)ligne 22 : ajout close prend un descripteur de fichier
alors: close(ss);
alors int main(int argc, char *argv[])
2)Ligne 13 :erreurs c'est le domaine de la socket
alors utiliser 'AF_INET' pour une adresse Internet s = socket(AF_INET, SOCK_DGRAM,0);
3)Ligne 15 :Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
alors serv_addr.sin_family = AF_INET;
4)ligne 16 : utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
alors serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
5)ligne 17 : htons nécessite un entier court non signé
alors : serv_addr.sin_port = htons(atoi(argv[1]));
6)ligne 17.1 : accept vient aprés le bind et il ya un erreur dans 'accepte()' le point fergule dans les parametre
alors : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
7)ligne 17.2 : 'exit()'.
alors: exit(1);
8)ligne 18 : erreur das l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
alors : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
9)ligne 18 : il manque le point 'exit()'.
alors : exit(1);
10)ligne 19 : erreur das l'appel à la fonction 'read()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : read(ss, &nbr, sizeof(nbr));
11)ligne 21 : erreur das l'appel à la fonction 'write()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : write(ss, &nbr, sizeof(nbr));
12)ligne 22 : ajout close prend un descripteur de fichier
alors: close(ss);
erreur ligne 12 argc n'est pas declaré
erreur ligne 12 Printf c'est printf minuscule
erreur ligne 16 serv_addr.sin_addr.s_addr = 127.0.0.1 => inet_addr("127.0.0.1 ")
erreur en fait le bind avant le accept
erreur ligne 17 argv[] n'est pas declaré
erreur ligne 17->1 &sizeof(cli_addr) => int size = sizeof(serv_addr); accept(..,&size);
erreur ligne 18 bind(ss,...); => bind(s,...); s de serveur
erreur ligne 19 read prend 3 argument seulement pas 4
erreur ligne 19 data n'est pas declaré
erreur ligne 21 write prend 3 argument pas 4
erreur ligne 12 Printf c'est printf minuscule
erreur ligne 16 serv_addr.sin_addr.s_addr = 127.0.0.1 => inet_addr("127.0.0.1 ")
erreur en fait le bind avant le accept
erreur ligne 17 argv[] n'est pas declaré
erreur ligne 17->1 &sizeof(cli_addr) => int size = sizeof(serv_addr); accept(..,&size);
erreur ligne 18 bind(ss,...); => bind(s,...); s de serveur
erreur ligne 19 read prend 3 argument seulement pas 4
erreur ligne 19 data n'est pas declaré
erreur ligne 21 write prend 3 argument pas 4
il faut ajouter close(ss);
string.h et netinet/in.h pas nécessaire et est pas nécessaire
-Aprés la ligne 7: Ajouter la bibliothéque #include .
-Ligne 8: Erreur dans 'main()' ajouter argc et argv.
correction: int main(int argc, char *argv[])
-ligne 12: Les guillemets de fermeture (') ne sont pas corrects, p minuscule et exit.
correction : printf("port??\n"); exit(-1);
-ligne 13: Erreur dans le domaine de creation socket et le type parce que on utilise read et write (en mode connecté(TCP)).
correction: s = socket(AF_INET,SOCK_STREAM,0);
-ligne 15: AF_UNIX devrait être AF_INET pour spécifier le protocole IP.
correction : serv_addr.sin_family = AF_INET;
-ligne 16: Ajouter la fonction "inet_addr()" pour définir l'adresse IP.
correction : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-ligne 17: argv[1] doit être convertir en un entier avant d'être utilisé dans htons.
correction : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne 17.1: le bind est le premier aprés l'accept.
on fait sizeof(cli_addr) dans un variable.
supprimer ; aprés sizeof(cli_addr).
-ligne (17.2 ) : dans la fin, il n'y a pas ;
correction :
if (bind(s, &serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
int L = sizeof(cli_addr)
ss = accept(s, &cli_addr, &L);
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19: il y'a 3 paramétre ,changé data par nbr et un erreur de l'appel accept.
correction : read(ss, &nbr, sizeof(nbr));
-ligne 21: il y'a 3 paramétre et un erreur de l'appel accept.
correction : write(ss, &nbr, sizeof(nbr));
-Aprés la ligne 21 : Ajouter la Fermeture de descripteur de fichier.
correction : close(ss);
-Ligne 8: Erreur dans 'main()' ajouter argc et argv.
correction: int main(int argc, char *argv[])
-ligne 12: Les guillemets de fermeture (') ne sont pas corrects, p minuscule et exit.
correction : printf("port??\n"); exit(-1);
-ligne 13: Erreur dans le domaine de creation socket et le type parce que on utilise read et write (en mode connecté(TCP)).
correction: s = socket(AF_INET,SOCK_STREAM,0);
-ligne 15: AF_UNIX devrait être AF_INET pour spécifier le protocole IP.
correction : serv_addr.sin_family = AF_INET;
-ligne 16: Ajouter la fonction "inet_addr()" pour définir l'adresse IP.
correction : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-ligne 17: argv[1] doit être convertir en un entier avant d'être utilisé dans htons.
correction : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne 17.1: le bind est le premier aprés l'accept.
on fait sizeof(cli_addr) dans un variable.
supprimer ; aprés sizeof(cli_addr).
-ligne (17.2 ) : dans la fin, il n'y a pas ;
correction :
if (bind(s, &serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
int L = sizeof(cli_addr)
ss = accept(s, &cli_addr, &L);
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19: il y'a 3 paramétre ,changé data par nbr et un erreur de l'appel accept.
correction : read(ss, &nbr, sizeof(nbr));
-ligne 21: il y'a 3 paramétre et un erreur de l'appel accept.
correction : write(ss, &nbr, sizeof(nbr));
-Aprés la ligne 21 : Ajouter la Fermeture de descripteur de fichier.
correction : close(ss);
ssaccept (s(struct sockaddr") &cli_addr, & sizeof (cli_addr););
if (ss<0) [
perror ('accept');
}
exit(1)
18. if (bind(s), (struct sockaddr")&serv_addr,sizeof(serv_addr))<0)
{ perror('bind');
exit(1)
}
19.read(s, tnbr, sizeof(data),0); 20.nbr-nbr*2;
21.write (s, &nbr, sizeof(nbr),0);
22.close(s);
23.return 0;
24.]
Voici les erreurs corrigées :
Ligne 12 : Remplacez Printf par printf et corrigez la citation : printf("port?? \n"); exit(1);
Ligne 13 : Changez AF_UNIX en AF_INET pour un socket Internet.
Ligne 14 : Remplacez les crochets [ et ] par des accolades { et }.
Ligne 16 : Corrigez argy en argv : serv_addr.sin_port = htons(atoi(argv[1]));
Ligne 17 : Corrigez ssaccept en accept et enlevez la parenthèse après s.
Ligne 17 : Corrigez &cli_addr, & sizeof (cli_addr) en &cli_addr, sizeof(cli_addr).
Ligne 17 : Remplacez ['accept'); par ("accept");.
Ligne 18 : Corrigez la parenthèse après s : if (bind(s, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18 : Remplacez ('bind'); par ("bind");.
Ligne 19 : Corrigez tnbr en &nbr.
Ligne 21 : Corrigez write (s, &nbr, sizeof(nbr),0); en write (s, &nbr, sizeof(nbr));.
Ligne 23 : Ajoutez un point-virgule à la fin de la ligne.
if (ss<0) [
perror ('accept');
}
exit(1)
18. if (bind(s), (struct sockaddr")&serv_addr,sizeof(serv_addr))<0)
{ perror('bind');
exit(1)
}
19.read(s, tnbr, sizeof(data),0); 20.nbr-nbr*2;
21.write (s, &nbr, sizeof(nbr),0);
22.close(s);
23.return 0;
24.]
Voici les erreurs corrigées :
Ligne 12 : Remplacez Printf par printf et corrigez la citation : printf("port?? \n"); exit(1);
Ligne 13 : Changez AF_UNIX en AF_INET pour un socket Internet.
Ligne 14 : Remplacez les crochets [ et ] par des accolades { et }.
Ligne 16 : Corrigez argy en argv : serv_addr.sin_port = htons(atoi(argv[1]));
Ligne 17 : Corrigez ssaccept en accept et enlevez la parenthèse après s.
Ligne 17 : Corrigez &cli_addr, & sizeof (cli_addr) en &cli_addr, sizeof(cli_addr).
Ligne 17 : Remplacez ['accept'); par ("accept");.
Ligne 18 : Corrigez la parenthèse après s : if (bind(s, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18 : Remplacez ('bind'); par ("bind");.
Ligne 19 : Corrigez tnbr en &nbr.
Ligne 21 : Corrigez write (s, &nbr, sizeof(nbr),0); en write (s, &nbr, sizeof(nbr));.
Ligne 23 : Ajoutez un point-virgule à la fin de la ligne.
correction des erreurs
1-la syntaxe des instructions conditionnelles if , else les conditions doivent être entre parenthèses ( ) ,pas entre crochets [ ] ou accolades { }.
2-il manque une déclaration pour argc et argv [ ] dans la fonction main ( ) .
3-socket (AF_UNIX,SOCK_DGRAM,0); devrait etre s=socket (AF_INET, SOCK_STREAM,0);
4-il y a une erreur de syntaxe dans la fonction printf( ) : "port ?\n' devrait etre "port ?\n"
5-les appels aux fonctions perror ( ) et exit ( ) ont des erreurs: perror( 'socket"); et exit (1); ) devrait etre
perror ("socket"); et exit (1);
6-serv_addr .sin_addr .s_addr =127.0.0.1 ;devrait etre serv_addr .sin_addr .s_addr =htonl(INADDR_ANY);
7-serv_addr .sin_port =hotons(argv[1]); devrait etre serv_addr .sin_port =hotons( atoi(argv[1]) );
8-1 .ss=accept (s(struct sockaddr ") &cli_addr , &sizeof (cli_addr);); sont des lignes incorrectes et doivent etre réécrites coorectement
9-if (bind(s) , (struct sockaddr*&serv_addr ,sizeof(serv_addr))<0) devrait etre if (bind(s ,(struct sockaddr*&serv_addr ,sizeof(serv_addr) ) < 0)
10-les déclarations int s, ss, nbr , et char c ;devrait etre sur des lignes séparés
11-nbr-nbr*2; devrait etre = nbr * 2 ;
12-return 0 ; ] devrait etre return 0; }
1-la syntaxe des instructions conditionnelles if , else les conditions doivent être entre parenthèses ( ) ,pas entre crochets [ ] ou accolades { }.
2-il manque une déclaration pour argc et argv [ ] dans la fonction main ( ) .
3-socket (AF_UNIX,SOCK_DGRAM,0); devrait etre s=socket (AF_INET, SOCK_STREAM,0);
4-il y a une erreur de syntaxe dans la fonction printf( ) : "port ?\n' devrait etre "port ?\n"
5-les appels aux fonctions perror ( ) et exit ( ) ont des erreurs: perror( 'socket"); et exit (1); ) devrait etre
perror ("socket"); et exit (1);
6-serv_addr .sin_addr .s_addr =127.0.0.1 ;devrait etre serv_addr .sin_addr .s_addr =htonl(INADDR_ANY);
7-serv_addr .sin_port =hotons(argv[1]); devrait etre serv_addr .sin_port =hotons( atoi(argv[1]) );
8-1 .ss=accept (s(struct sockaddr ") &cli_addr , &sizeof (cli_addr);); sont des lignes incorrectes et doivent etre réécrites coorectement
9-if (bind(s) , (struct sockaddr*&serv_addr ,sizeof(serv_addr))<0) devrait etre if (bind(s ,(struct sockaddr*&serv_addr ,sizeof(serv_addr) ) < 0)
10-les déclarations int s, ss, nbr , et char c ;devrait etre sur des lignes séparés
11-nbr-nbr*2; devrait etre = nbr * 2 ;
12-return 0 ; ] devrait etre return 0; }
-ligne 8 ( erreurs en ajout argc et argv)
correrction : int main( int argc , char**argv)
-ligne 13 (erreurs c'est le domaine de la socket)
correction : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14 ( erreur c'est les "" dans function perror , & 1 dans function exit )
correction : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 : ( erreur c 'est AF_UNIX)
correction : serv_addr.sin_family = AF_INET;
ligne 17 : (erreur c 'est htons (argv[1]);
correction : (atoi (argv[1]));
ligne 17 .1 : remarque accept vient aprés le bind , pas avant le bind
17.2 (erreur dand function perror , & exit(1) & le point firgule )
ligne 18 : (erreur exit (1) & point firguile)
correction ( 17.1 + 17.2 + 18 ) :
17.1 if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
18.ss = accept(s, (struct sockaddr*)&cli_addr, &sizeof(cli_addr));
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19 (erreur socket s , sizeof(data)
correction : read ( ss , &nbr , sizeof(nbr) , 0 );
-ligne 21 (erreur socket s )
correction : write ( ss , &nbr , sizeof ( nbr),0);
ligne 22 : ( en ajoute close (ss); )
correrction : int main( int argc , char**argv)
-ligne 13 (erreurs c'est le domaine de la socket)
correction : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14 ( erreur c'est les "" dans function perror , & 1 dans function exit )
correction : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 : ( erreur c 'est AF_UNIX)
correction : serv_addr.sin_family = AF_INET;
ligne 17 : (erreur c 'est htons (argv[1]);
correction : (atoi (argv[1]));
ligne 17 .1 : remarque accept vient aprés le bind , pas avant le bind
17.2 (erreur dand function perror , & exit(1) & le point firgule )
ligne 18 : (erreur exit (1) & point firguile)
correction ( 17.1 + 17.2 + 18 ) :
17.1 if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
18.ss = accept(s, (struct sockaddr*)&cli_addr, &sizeof(cli_addr));
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19 (erreur socket s , sizeof(data)
correction : read ( ss , &nbr , sizeof(nbr) , 0 );
-ligne 21 (erreur socket s )
correction : write ( ss , &nbr , sizeof ( nbr),0);
ligne 22 : ( en ajoute close (ss); )
les erreurs sont :
La ligne 8 : en ajoutant les arguments dans le fonction main () pour accepter les arguments de la ligne de commande
correction est: int main(int argc, char *argv[])
la ligne 13 : erreur dans le domaine de socket:
correction : s = socket(AF_INET, SOCK_DGRAM, 0);
la ligne 15 erreur dans AF_UNIX
correction : serv_addr.sin_family = AF_INET;
la ligne 17 et 18 : on a une erreur : normalement on a la connection " bind " avant accecptation "accept"
la ligne 22 :
close (ss) au lieu de close(s) fermer le socket ss per conter le "s" est un discripteur de fichier
La ligne 8 : en ajoutant les arguments dans le fonction main () pour accepter les arguments de la ligne de commande
correction est: int main(int argc, char *argv[])
la ligne 13 : erreur dans le domaine de socket:
correction : s = socket(AF_INET, SOCK_DGRAM, 0);
la ligne 15 erreur dans AF_UNIX
correction : serv_addr.sin_family = AF_INET;
la ligne 17 et 18 : on a une erreur : normalement on a la connection " bind " avant accecptation "accept"
la ligne 22 :
close (ss) au lieu de close(s) fermer le socket ss per conter le "s" est un discripteur de fichier
#include
#include
#include
#include
int main() {
int s = socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in *addr;
addr.sin_family = AF_INET;
addr.sun_port = 3000;
addr.sin_addr.s_addrs = INADDRANY;
if(bind(&s,addr,sizeof(addr))==-1) {
printf("bind succés");
}
return 0;
}
#include
#include
#include
int main() {
int s = socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in *addr;
addr.sin_family = AF_INET;
addr.sun_port = 3000;
addr.sin_addr.s_addrs = INADDRANY;
if(bind(&s,addr,sizeof(addr))==-1) {
printf("bind succés");
}
return 0;
}
Il y a plusieurs erreurs dans ce code
La ligne 12 : Il y a une erreur de syntaxe dans la fonction Printf. La fonction Printf devrait être en minuscules, elle devrait être printf.
La ligne 13 : Il y a une erreur de spécification de domaine de socket. AF_UNIX devrait être AF_INET pour les sockets IPv4.
La ligne 16 : Il y a une erreur dans l'initialisation de l'adresse IP du serveur. L'adresse IP devrait être spécifiée sous forme d'une adresse de type struct in_addr et non d'une adresse sous forme décimale. De plus, 127.0.0.1 est une adresse IPv4, donc elle ne devrait pas être utilisée avec AF_UNIX.
La ligne 17 : htons prend un argument de type unsigned short, donc argv[1] doit être converti en entier avant d'être passé à cette fonction. De plus, il manque l'opérateur d'adressage (&) devant argv[1].
La ligne 17 : Il manque une virgule après s.
La ligne 17 : htons est utilisé, mais la famille d'adresse est spécifiée comme AF_UNIX. Cela doit être cohérent avec AF_INET.
La ligne 18 : Il y a une erreur de syntaxe dans l'appel à bind. Les guillemets simples devraient être remplacés par des guillemets doubles autour du texte d'erreur.
La ligne 19 : read prend un descripteur de fichier en premier argument, mais le descripteur s n'est pas utilisé ici. De plus, sizeof(data) n'est pas défini, cela devrait être sizeof(nbr) si vous voulez lire nbr de la socket.
La ligne 20 : L'opérateur - semble être utilisé incorrectement, peut-être qu'il devrait être = au lieu de -.
La ligne 21 : L'appel à write n'est pas correctement formaté, il devrait y avoir une virgule après nbr.
La ligne 22 : Il y a une erreur de syntaxe dans l'appel à close. Les guillemets simples devraient être remplacés par des guillemets doubles autour du texte d'erreur.
La ligne 23 : return devrait être en minuscules, Return.
La ligne 24 : Il y a une erreur de syntaxe, il semble qu'il y a une parenthèse fermante sans une parenthèse ouvrante correspondante.
La ligne 12 : Il y a une erreur de syntaxe dans la fonction Printf. La fonction Printf devrait être en minuscules, elle devrait être printf.
La ligne 13 : Il y a une erreur de spécification de domaine de socket. AF_UNIX devrait être AF_INET pour les sockets IPv4.
La ligne 16 : Il y a une erreur dans l'initialisation de l'adresse IP du serveur. L'adresse IP devrait être spécifiée sous forme d'une adresse de type struct in_addr et non d'une adresse sous forme décimale. De plus, 127.0.0.1 est une adresse IPv4, donc elle ne devrait pas être utilisée avec AF_UNIX.
La ligne 17 : htons prend un argument de type unsigned short, donc argv[1] doit être converti en entier avant d'être passé à cette fonction. De plus, il manque l'opérateur d'adressage (&) devant argv[1].
La ligne 17 : Il manque une virgule après s.
La ligne 17 : htons est utilisé, mais la famille d'adresse est spécifiée comme AF_UNIX. Cela doit être cohérent avec AF_INET.
La ligne 18 : Il y a une erreur de syntaxe dans l'appel à bind. Les guillemets simples devraient être remplacés par des guillemets doubles autour du texte d'erreur.
La ligne 19 : read prend un descripteur de fichier en premier argument, mais le descripteur s n'est pas utilisé ici. De plus, sizeof(data) n'est pas défini, cela devrait être sizeof(nbr) si vous voulez lire nbr de la socket.
La ligne 20 : L'opérateur - semble être utilisé incorrectement, peut-être qu'il devrait être = au lieu de -.
La ligne 21 : L'appel à write n'est pas correctement formaté, il devrait y avoir une virgule après nbr.
La ligne 22 : Il y a une erreur de syntaxe dans l'appel à close. Les guillemets simples devraient être remplacés par des guillemets doubles autour du texte d'erreur.
La ligne 23 : return devrait être en minuscules, Return.
La ligne 24 : Il y a une erreur de syntaxe, il semble qu'il y a une parenthèse fermante sans une parenthèse ouvrante correspondante.
correction des erreurs
1-la syntaxe des instructions conditionnelles if , else les conditions doivent être entre parenthèses ( ) ,pas entre crochets [ ] ou accolades { }.
2-il manque une déclaration pour argc et argv [ ] dans la fonction main ( ) .
3-socket (AF_UNIX,SOCK_DGRAM,0); devrait etre s=socket (AF_INET, SOCK_STREAM,0);
4-il y a une erreur de syntaxe dans la fonction printf( ) : "port ?\n' devrait etre "port ?\n"
5-les appels aux fonctions perror ( ) et exit ( ) ont des erreurs: perror( 'socket"); et exit (1); ) devrait etre
perror ("socket"); et exit (1);
6-serv_addr .sin_addr .s_addr =127.0.0.1 ;devrait etre serv_addr .sin_addr .s_addr =htonl(INADDR_ANY);
7-serv_addr .sin_port =hotons(argv[1]); devrait etre serv_addr .sin_port =hotons( atoi(argv[1]) );
8-1 .ss=accept (s(struct sockaddr ") &cli_addr , &sizeof (cli_addr);); sont des lignes incorrectes et doivent etre réécrites coorectement
9-if (bind(s) , (struct sockaddr*&serv_addr ,sizeof(serv_addr))<0) devrait etre if (bind(s ,(struct sockaddr*&serv_addr ,sizeof(serv_addr) ) < 0)
10-les déclarations int s, ss, nbr , et char c ;devrait etre sur des lignes séparés
11-nbr-nbr*2; devrait etre = nbr * 2 ;
12-return 0 ; ] devrait etre return 0;
1-la syntaxe des instructions conditionnelles if , else les conditions doivent être entre parenthèses ( ) ,pas entre crochets [ ] ou accolades { }.
2-il manque une déclaration pour argc et argv [ ] dans la fonction main ( ) .
3-socket (AF_UNIX,SOCK_DGRAM,0); devrait etre s=socket (AF_INET, SOCK_STREAM,0);
4-il y a une erreur de syntaxe dans la fonction printf( ) : "port ?\n' devrait etre "port ?\n"
5-les appels aux fonctions perror ( ) et exit ( ) ont des erreurs: perror( 'socket"); et exit (1); ) devrait etre
perror ("socket"); et exit (1);
6-serv_addr .sin_addr .s_addr =127.0.0.1 ;devrait etre serv_addr .sin_addr .s_addr =htonl(INADDR_ANY);
7-serv_addr .sin_port =hotons(argv[1]); devrait etre serv_addr .sin_port =hotons( atoi(argv[1]) );
8-1 .ss=accept (s(struct sockaddr ") &cli_addr , &sizeof (cli_addr);); sont des lignes incorrectes et doivent etre réécrites coorectement
9-if (bind(s) , (struct sockaddr*&serv_addr ,sizeof(serv_addr))<0) devrait etre if (bind(s ,(struct sockaddr*&serv_addr ,sizeof(serv_addr) ) < 0)
10-les déclarations int s, ss, nbr , et char c ;devrait etre sur des lignes séparés
11-nbr-nbr*2; devrait etre = nbr * 2 ;
12-return 0 ; ] devrait etre return 0;
1)Ligne 8 : errure dans la fonction principale 'main()' ajout argc et argv
alors int main(int argc, char *argv[])
2)Ligne 13 :erreurs c'est le domaine de la socket
alors utiliser 'AF_INET' pour une adresse Internet s = socket(AF_INET, SOCK_DGRAM,0);
3)Ligne 15 :Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
alors serv_addr.sin_family = AF_INET;
4)ligne 16 : utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
alors serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
5)ligne 17 : htons nécessite un entier court non signé
alors : serv_addr.sin_port = htons(atoi(argv[1]));
6)ligne 17.1 : accept vient aprés le bind et il ya un erreur dans 'accepte()' le point fergule dans les parametre
alors : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
7)ligne 17.2 : 'exit()'.
alors: exit(1);
8)ligne 18 : erreur das l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
alors : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
9)ligne 18 : il manque le point 'exit()'.
alors : exit(1);
10)ligne 19 : erreur das l'appel à la fonction 'read()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : read(ss, &nbr, sizeof(nbr));
11)ligne 21 : erreur das l'appel à la fonction 'write()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : write(ss, &nbr, sizeof(nbr));
12)ligne 22 : ajout close prend un descripteur de fichier
alors: close(ss);
alors int main(int argc, char *argv[])
2)Ligne 13 :erreurs c'est le domaine de la socket
alors utiliser 'AF_INET' pour une adresse Internet s = socket(AF_INET, SOCK_DGRAM,0);
3)Ligne 15 :Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
alors serv_addr.sin_family = AF_INET;
4)ligne 16 : utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
alors serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
5)ligne 17 : htons nécessite un entier court non signé
alors : serv_addr.sin_port = htons(atoi(argv[1]));
6)ligne 17.1 : accept vient aprés le bind et il ya un erreur dans 'accepte()' le point fergule dans les parametre
alors : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
7)ligne 17.2 : 'exit()'.
alors: exit(1);
8)ligne 18 : erreur das l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
alors : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
9)ligne 18 : il manque le point 'exit()'.
alors : exit(1);
10)ligne 19 : erreur das l'appel à la fonction 'read()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : read(ss, &nbr, sizeof(nbr));
11)ligne 21 : erreur das l'appel à la fonction 'write()' doit être effectué sur le socket de connexion 'ss'et non sur le socket d'écoute 's'.
alors : write(ss, &nbr, sizeof(nbr));
12)ligne 22 : ajout close prend un descripteur de fichier
alors: close(ss);
voici les erreurs détectées dans ce programme C++ :
1-Les en-têtes de C tels que #include , #include , et #include sont utilisés au lieu de leurs équivalents en C++ comme , , et .
2-L’utilisation de printf est présente ; en C++, il est recommandé d’utiliser std::cout.
3-exit(1) est utilisé, ce qui n’est pas recommandé en C++. Il serait préférable de retourner une valeur depuis la fonction principale.
4-Il y a une erreur syntaxique avec
if(argc > 2), qui devrait être if(argc < 2) pour vérifier si argc est inférieur à 2.
5-La variable ‘data’ dans l’appel de fonction ‘read’ n’est pas déclarée ni initialisée.
6-Le code utilise AF_UNIX pour la famille d’adresses, mais une adresse IP est également spécifiée, ce qui est contradictoire.
Pour une aide plus détaillée, veuillez partager le code directement sous forme de texte.
1-Les en-têtes de C tels que #include , #include , et #include sont utilisés au lieu de leurs équivalents en C++ comme , , et .
2-L’utilisation de printf est présente ; en C++, il est recommandé d’utiliser std::cout.
3-exit(1) est utilisé, ce qui n’est pas recommandé en C++. Il serait préférable de retourner une valeur depuis la fonction principale.
4-Il y a une erreur syntaxique avec
if(argc > 2), qui devrait être if(argc < 2) pour vérifier si argc est inférieur à 2.
5-La variable ‘data’ dans l’appel de fonction ‘read’ n’est pas déclarée ni initialisée.
6-Le code utilise AF_UNIX pour la famille d’adresses, mais une adresse IP est également spécifiée, ce qui est contradictoire.
Pour une aide plus détaillée, veuillez partager le code directement sous forme de texte.
-ligne 8 : erreurs en ajout argc et argv)
la réponse juste c’est : int main( int argc , char**argv)
-Ligne (13) : vous utilisez 'AF_UNIX' dans la fonction socket, alors que vous devriez probablement utiliser 'AF_INET' pour une adresse Internet.
la réponse juste c’est : s = socket(AF_INET, SOCK_DGRAM, 0);
-Ligne (15) : La valeur de 'serv_addr.sin_family' est définie à 'AF_UNIX', mais le code utilise ensuite des fonctions qui sont spécifiques à 'AF_INET'. Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
la réponse juste c’est : serv_addr.sin_family = AF_INET;
-ligne (16) : vous devez utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
la réponse juste c’est : serv_addr.sin_addr.s_addr = inet_addr("INADDR_ANY;");
-ligne (17) : htons nécessite un entier court non signé , donc il faut convertir argv[1] en un entier avant de l'utiliser.
la réponse juste c’est : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne (17-1) : il ya un erreur dans 'accepte()' le point virgule dans les paramètre .
la réponse juste c’est : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
-ligne (17-2) : il manque le point virgule dans la fonction 'exit()'.
la réponse juste c’est : exit(1);
-ligne 18 : erreur dans l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
la réponse juste c’est : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
Ligne (21) : Il manque un ";" après "write (s, &nbr, sizeof(nbr),0)".
la réponse juste c’est: : write(ss, &nbr, sizeof(nbr));
Ligne 20 : L'opération "nbr-nbr*2" n'a pas de sens car elle soustrait un nombre à lui-même et le multiplie ensuite par 2.
-ligne 22 : close(s);
la réponse juste c’est : close(ss);
la réponse juste c’est : int main( int argc , char**argv)
-Ligne (13) : vous utilisez 'AF_UNIX' dans la fonction socket, alors que vous devriez probablement utiliser 'AF_INET' pour une adresse Internet.
la réponse juste c’est : s = socket(AF_INET, SOCK_DGRAM, 0);
-Ligne (15) : La valeur de 'serv_addr.sin_family' est définie à 'AF_UNIX', mais le code utilise ensuite des fonctions qui sont spécifiques à 'AF_INET'. Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
la réponse juste c’est : serv_addr.sin_family = AF_INET;
-ligne (16) : vous devez utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
la réponse juste c’est : serv_addr.sin_addr.s_addr = inet_addr("INADDR_ANY;");
-ligne (17) : htons nécessite un entier court non signé , donc il faut convertir argv[1] en un entier avant de l'utiliser.
la réponse juste c’est : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne (17-1) : il ya un erreur dans 'accepte()' le point virgule dans les paramètre .
la réponse juste c’est : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
-ligne (17-2) : il manque le point virgule dans la fonction 'exit()'.
la réponse juste c’est : exit(1);
-ligne 18 : erreur dans l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
la réponse juste c’est : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
Ligne (21) : Il manque un ";" après "write (s, &nbr, sizeof(nbr),0)".
la réponse juste c’est: : write(ss, &nbr, sizeof(nbr));
Ligne 20 : L'opération "nbr-nbr*2" n'a pas de sens car elle soustrait un nombre à lui-même et le multiplie ensuite par 2.
-ligne 22 : close(s);
la réponse juste c’est : close(ss);
Ligne 8:
Erreur: Fonction principale 'main()' sans paramètres.
Correction: Ajouter int argc, char *argv[] comme paramètres de la fonction main.
Ligne 13:
Erreur: Domaine de la socket incorrect.
Correction: Utiliser AF_INET pour une adresse Internet : s = socket(AF_INET, SOCK_DGRAM, 0);.
Ligne 15:
Erreur: Utilisation de AF_UNIX au lieu de AF_INET.
Correction: Changer serv_addr.sin_family = AF_UNIX; en serv_addr.sin_family = AF_INET;.
Ligne 16:
Erreur: Fonction inet_addr() non utilisée pour définir l'adresse IP.
Correction: Utiliser inet_addr("127.0.0.1") pour définir l'adresse IP : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");.
Ligne 17:
Erreur: Argument de htons() non converti en entier court non signé.
Correction: Convertir l'argument argv[1] en entier court non signé avant de l'utiliser : serv_addr.sin_port = htons(atoi(argv[1]));.
Ligne 17.1:
Erreur: Point-virgule manquant dans les paramètres de accept().
Correction: Ajouter un point-virgule après sizeof(cli_addr) : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));.
Ligne 17.2:
Erreur: Absence de l'appel exit().
Correction: Ajouter exit(1); après l'appel accept().
Ligne 18:
Erreur: Appel de bind() sur le mauvais socket.
Correction: Appeler bind() sur le socket d'écoute s : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18.1:
Erreur: Absence de l'appel exit().
Correction: Ajouter exit(1); après l'appel bind().
Ligne 19:
Erreur: Appel de read() sur le mauvais socket.
Correction: Appeler read() sur le socket de connexion ss : read(ss, &nbr, sizeof(nbr));.
Ligne 21:
Erreur: Appel de write() sur le mauvais socket.
Correction: Appeler write() sur le socket de connexion ss : write(ss, &nbr, sizeof(nbr));.
Ligne 22:
Erreur: Fonction close() sans argument.
Correction: Indiquer le descripteur de fichier à fermer : close(ss);.
Nous Remarque qua y a deuxe facons de sounder exerciser
Le premier cas ;
si nous considerons le programme de servure mode noconnect UDP
ajouter la bibliothéque #include apri ligne (07 )
ligne (09 ) int main(int argc, char **argv)
ligne (10) char c ;c caractuer preis difini langaja c :chr* ("127.0.0.1");
ligne (12) if(argc != 2){ int port = atoi(argv[1]);
ligne (13) socket = socket(s=AF_INET, SOCK_DGRAM, 0);
ligne (14) if (ss == -1) {
perror("Erreur lors de la création du socket");
exit(EXIT_FAILURE) ;
}
ligne (15) serv_addr.sin_family = AF_INET;
ligne (16) serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); if (ss == -1) {
perror("Erreur lors de la création du socket");
exit(EXIT_FAILURE);
}
ligne (17) serv_addr.sin_port = htons(atoi(argv[1]));
ligne (17_1) supprimer function accept (udp
correction : exit(1);
ajouter : memset(&serv_addr r, '\0', sizeof(serv_addr));
ligne (18) (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr
ligne (19 ) data n'est pas declaré
recvfrom (ss, &nbr, sizeof(nbr) 0, (struct sockaddr*)& ip, &addr_size);
ligne (20)
ligne (21) sendto (ss, &nbr, sizeof(nbr) 0, (struct sockaddr*)& ip, &addr_size);
ligne (22) ajouter close(ss);
Le deuxieme cas
;si nous considerons le programme de servure mode connecté(TCP) ;.
ajouter la bibliothéque #include apri ligne (07 )
ligne (09 ) int main(int argc, char **argv)
ligne (10) char c ;c caractuer preis difini langaja c :chr* ("127.0.0.1");
newsocke ; newaddr
ligne (12) if(argc != 2){ int port = atoi(argv[1]);
ligne (13) socket = socket(s=AF_INET, SOCK_STREAM , 0);
ligne (14) if (ss == -1) {
perror("Erreur lors de la création du socket");
exit(EXIT_FAILURE);
}
ligne (15) serv_addr.sin_family = AF_INET;
ligne (16) serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
ligne (17) serv_addr.sin_port = htons(atoi(argv[1]));
ligne (17_1) order la function accept aprie bind ; lisen
ajouter : memset(&serv_addr r, '\0', sizeof(serv_addr));
ligne (18) if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr
ajouter la function listen
if listen (s,4 );
ajouter la function accept aprie listen
addrsize = sizeof(newaddr);
newssocket = accept(serverSocket, (struct sockaddr*r, &addrsize);
if (newsocket == -1) {)&newadd
perror("Erreur lors de l'acceptation de la connexion");
exit(EXIT_FAILURE);
}
ligne (19 ) data n'est pas declaré
read(newsocke, &nbr, sizeof(nbr) 0, (struct sockaddr*)& ip, &addr_size);
ligne (20 )
ligne (21)write(newsocket, nbr, sizeof(nbr), 0);
ligne (21) send(newSocket, buffer, strlen(buffer), 0);
ligne (22) ajouter close(newsocket);
Le premier cas ;
si nous considerons le programme de servure mode noconnect UDP
ajouter la bibliothéque #include apri ligne (07 )
ligne (09 ) int main(int argc, char **argv)
ligne (10) char c ;c caractuer preis difini langaja c :chr* ("127.0.0.1");
ligne (12) if(argc != 2){ int port = atoi(argv[1]);
ligne (13) socket = socket(s=AF_INET, SOCK_DGRAM, 0);
ligne (14) if (ss == -1) {
perror("Erreur lors de la création du socket");
exit(EXIT_FAILURE) ;
}
ligne (15) serv_addr.sin_family = AF_INET;
ligne (16) serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); if (ss == -1) {
perror("Erreur lors de la création du socket");
exit(EXIT_FAILURE);
}
ligne (17) serv_addr.sin_port = htons(atoi(argv[1]));
ligne (17_1) supprimer function accept (udp
correction : exit(1);
ajouter : memset(&serv_addr r, '\0', sizeof(serv_addr));
ligne (18) (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr
ligne (19 ) data n'est pas declaré
recvfrom (ss, &nbr, sizeof(nbr) 0, (struct sockaddr*)& ip, &addr_size);
ligne (20)
ligne (21) sendto (ss, &nbr, sizeof(nbr) 0, (struct sockaddr*)& ip, &addr_size);
ligne (22) ajouter close(ss);
Le deuxieme cas
;si nous considerons le programme de servure mode connecté(TCP) ;.
ajouter la bibliothéque #include apri ligne (07 )
ligne (09 ) int main(int argc, char **argv)
ligne (10) char c ;c caractuer preis difini langaja c :chr* ("127.0.0.1");
newsocke ; newaddr
ligne (12) if(argc != 2){ int port = atoi(argv[1]);
ligne (13) socket = socket(s=AF_INET, SOCK_STREAM , 0);
ligne (14) if (ss == -1) {
perror("Erreur lors de la création du socket");
exit(EXIT_FAILURE);
}
ligne (15) serv_addr.sin_family = AF_INET;
ligne (16) serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
ligne (17) serv_addr.sin_port = htons(atoi(argv[1]));
ligne (17_1) order la function accept aprie bind ; lisen
ajouter : memset(&serv_addr r, '\0', sizeof(serv_addr));
ligne (18) if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr
ajouter la function listen
if listen (s,4 );
ajouter la function accept aprie listen
addrsize = sizeof(newaddr);
newssocket = accept(serverSocket, (struct sockaddr*r, &addrsize);
if (newsocket == -1) {)&newadd
perror("Erreur lors de l'acceptation de la connexion");
exit(EXIT_FAILURE);
}
ligne (19 ) data n'est pas declaré
read(newsocke, &nbr, sizeof(nbr) 0, (struct sockaddr*)& ip, &addr_size);
ligne (20 )
ligne (21)write(newsocket, nbr, sizeof(nbr), 0);
ligne (21) send(newSocket, buffer, strlen(buffer), 0);
ligne (22) ajouter close(newsocket);
Ligne 8 :
Erreur : La fonction principale 'main()' est définie sans paramètres.
Correction : Pour corriger cela, ajoutez int argc, char *argv[] comme paramètres de la fonction main.
Ligne 13 :
Erreur : Utilisation d'un domaine de socket incorrect.
Correction : Utilisez AF_INET pour une adresse Internet en remplaçant le domaine de socket par AF_INET dans la création de la socket : s = socket(AF_INET, SOCK_DGRAM, 0);
Ligne 15 :
Erreur : Utilisation incorrecte de AF_UNIX au lieu de AF_INET.
Correction : Changez AF_UNIX en AF_INET pour définir le type de famille de l'adresse du serveur : serv_addr.sin_family = AF_INET;
Ligne 16 :
Erreur : Absence d'utilisation de la fonction inet_addr() pour définir l'adresse IP.
Correction : Utilisez inet_addr("127.0.0.1") pour définir l'adresse IP du serveur : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
Ligne 17 :
Erreur : Argument non converti en entier court non signé avant l'utilisation de htons().
Correction : Convertissez l'argument argv[1] en entier court non signé avant de l'utiliser avec htons() : serv_addr.sin_port = htons((unsigned short)atoi(argv[1]));
Ligne 17.1 :
Erreur : Point-virgule manquant dans les paramètres de la fonction accept().
Correction : Ajoutez un point-virgule après sizeof(cli_addr) dans l'appel à accept() : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
Ligne 17.2 :
Erreur : Absence de l'appel à la fonction exit().
Correction : Ajoutez exit(1); après l'appel à la fonction accept() pour gérer les erreurs.
Ligne 18 :
Erreur : Utilisation incorrecte de bind() sur le mauvais socket.
Correction : Appelez bind() sur le socket d'écoute s : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18.1 :
Erreur : Absence de l'appel à la fonction exit().
Correction : Ajoutez exit(1); après l'appel à la fonction bind() pour gérer les erreurs.
Ligne 19 :
Erreur : Utilisation incorrecte de read() sur le mauvais socket.
Correction : Appelez read() sur le socket de connexion ss : read(ss, &nbr, sizeof(nbr));
Ligne 21 :
Erreur : Utilisation incorrecte de write() sur le mauvais socket.
Correction : Appelez write() sur le socket de connexion ss : write(ss, &nbr, sizeof(nbr));
Ligne 22 :
Erreur : Absence d'argument pour la fonction close().
Correction : Spécifiez le descripteur de fichier à fermer avec close() : close(ss);
Erreur : La fonction principale 'main()' est définie sans paramètres.
Correction : Pour corriger cela, ajoutez int argc, char *argv[] comme paramètres de la fonction main.
Ligne 13 :
Erreur : Utilisation d'un domaine de socket incorrect.
Correction : Utilisez AF_INET pour une adresse Internet en remplaçant le domaine de socket par AF_INET dans la création de la socket : s = socket(AF_INET, SOCK_DGRAM, 0);
Ligne 15 :
Erreur : Utilisation incorrecte de AF_UNIX au lieu de AF_INET.
Correction : Changez AF_UNIX en AF_INET pour définir le type de famille de l'adresse du serveur : serv_addr.sin_family = AF_INET;
Ligne 16 :
Erreur : Absence d'utilisation de la fonction inet_addr() pour définir l'adresse IP.
Correction : Utilisez inet_addr("127.0.0.1") pour définir l'adresse IP du serveur : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
Ligne 17 :
Erreur : Argument non converti en entier court non signé avant l'utilisation de htons().
Correction : Convertissez l'argument argv[1] en entier court non signé avant de l'utiliser avec htons() : serv_addr.sin_port = htons((unsigned short)atoi(argv[1]));
Ligne 17.1 :
Erreur : Point-virgule manquant dans les paramètres de la fonction accept().
Correction : Ajoutez un point-virgule après sizeof(cli_addr) dans l'appel à accept() : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
Ligne 17.2 :
Erreur : Absence de l'appel à la fonction exit().
Correction : Ajoutez exit(1); après l'appel à la fonction accept() pour gérer les erreurs.
Ligne 18 :
Erreur : Utilisation incorrecte de bind() sur le mauvais socket.
Correction : Appelez bind() sur le socket d'écoute s : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18.1 :
Erreur : Absence de l'appel à la fonction exit().
Correction : Ajoutez exit(1); après l'appel à la fonction bind() pour gérer les erreurs.
Ligne 19 :
Erreur : Utilisation incorrecte de read() sur le mauvais socket.
Correction : Appelez read() sur le socket de connexion ss : read(ss, &nbr, sizeof(nbr));
Ligne 21 :
Erreur : Utilisation incorrecte de write() sur le mauvais socket.
Correction : Appelez write() sur le socket de connexion ss : write(ss, &nbr, sizeof(nbr));
Ligne 22 :
Erreur : Absence d'argument pour la fonction close().
Correction : Spécifiez le descripteur de fichier à fermer avec close() : close(ss);
-Aprés la ligne 6: Ajouter la bibliothéque #include .
-Ligne 8: Erreur dans 'main()' ajouter argc et argv.
correction: int main(int argc, char *argv[])
-ligne 12: Erreur dans Les guillemets pour le message (') , p minuscule et exit.
correction :
printf("port??\n");
exit(-1);
-ligne 13: Erreur dans le domaine de creation socket et le type.
correction: s = socket(AF_INET,SOCK_STREAM,0);
-ligne 15: changer AF_UNIX par AF_INET .
correction : serv_addr.sin_family = AF_INET;
-ligne 16: Ajouter la fonction "inet_addr()".
correction : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-ligne 17: argv[1] doit être convertir en un entier avant d'être utilisé dans htons.
correction : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne 17.1: le bind est le premier aprés l'accept.
on fait sizeof(cli_addr) dans un variable.
supprimer ; aprés sizeof(cli_addr).
-ligne (17.2 ) : Ajouter ; la fin de la ligne
correction :
if (bind(s, &serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
int L = sizeof(cli_addr)
ss = accept(s, &cli_addr, &L);
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19: il y'a 3 paramétre ,changé data par nbr et un erreur de l'appel accept.
correction : read(ss, &nbr, sizeof(nbr));
-ligne 21: il y'a 3 paramétre et 1 erreur de l'appel accept.
correction : write(ss, &nbr, sizeof(nbr));
-Aprés la ligne 21 : Ajouter la Fermeture de descripteur de fichier.
correction : close(ss);
-Ligne 8: Erreur dans 'main()' ajouter argc et argv.
correction: int main(int argc, char *argv[])
-ligne 12: Erreur dans Les guillemets pour le message (') , p minuscule et exit.
correction :
printf("port??\n");
exit(-1);
-ligne 13: Erreur dans le domaine de creation socket et le type.
correction: s = socket(AF_INET,SOCK_STREAM,0);
-ligne 15: changer AF_UNIX par AF_INET .
correction : serv_addr.sin_family = AF_INET;
-ligne 16: Ajouter la fonction "inet_addr()".
correction : serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-ligne 17: argv[1] doit être convertir en un entier avant d'être utilisé dans htons.
correction : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne 17.1: le bind est le premier aprés l'accept.
on fait sizeof(cli_addr) dans un variable.
supprimer ; aprés sizeof(cli_addr).
-ligne (17.2 ) : Ajouter ; la fin de la ligne
correction :
if (bind(s, &serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
exit(-1);
}
int L = sizeof(cli_addr)
ss = accept(s, &cli_addr, &L);
if (ss < 0) {
perror("accept");
exit(-1);
}
-ligne 19: il y'a 3 paramétre ,changé data par nbr et un erreur de l'appel accept.
correction : read(ss, &nbr, sizeof(nbr));
-ligne 21: il y'a 3 paramétre et 1 erreur de l'appel accept.
correction : write(ss, &nbr, sizeof(nbr));
-Aprés la ligne 21 : Ajouter la Fermeture de descripteur de fichier.
correction : close(ss);
Ligne(8): Il manque les paramètres dans la fct main()
=> int main(int argc , char*argv[])
Ligne(13): En utilise des adresses internet donc AF-UNIX n'est pas compatible
=> s= socket(AF_INET,SOCK_DGRAM,0);
Ligne(15): changement 'AF_UNIX' par 'AF_INET'
Ligne(16): il manque la fct 'inet_addr()'
=> inet_addr("127.0.0.1");
Ligne(17): convertir argv[1] nécessite atoi
=> =htons(atoi(argv[1]));
Ligne (17.1): accept vient après le bind, pas avant le
Le point vergule dans les paramètres de fct accept
Ligne(17.2)
=> exit(1);
Ligne(18): l'appel de la fct bind() effectué sur le socket d'écoute 's' non sur 'ss' (socket de cnx)
Ligne(19): read() effectué sur le socket de cnx
=> read(ss,&nbr,sizeof(data),0);
=> int main(int argc , char*argv[])
Ligne(13): En utilise des adresses internet donc AF-UNIX n'est pas compatible
=> s= socket(AF_INET,SOCK_DGRAM,0);
Ligne(15): changement 'AF_UNIX' par 'AF_INET'
Ligne(16): il manque la fct 'inet_addr()'
=> inet_addr("127.0.0.1");
Ligne(17): convertir argv[1] nécessite atoi
=> =htons(atoi(argv[1]));
Ligne (17.1): accept vient après le bind, pas avant le
Le point vergule dans les paramètres de fct accept
Ligne(17.2)
=> exit(1);
Ligne(18): l'appel de la fct bind() effectué sur le socket d'écoute 's' non sur 'ss' (socket de cnx)
Ligne(19): read() effectué sur le socket de cnx
=> read(ss,&nbr,sizeof(data),0);
Ligne(21): 'write()' effectué sur le socket de cnx non sur socket d'écoute
Ligne(22): il manque de close() qui prend un description de fichier
=> close(ss);
Nous ajoutons deux bibliothèques
#include #include - Erreur de la fonction main : erreur en ajoute argc , argv
Correction:
Int main(int argc,char** argv)
La ligne 13: erreur lors de l'ecriture du socket pour que nous ayons deux processus a distance, nous utilisons donc INET au lieu d'UNIX
Correction:
S=socket (AF_INET ,SOCK_DGRAM ,0);
La ligne 15: toujours les processus a distances donc on utilise AF_INET au lieu de AF_UNIX
Correction:
Serv_addr.sin_family=AF_INEt;
La ligne 17: erreur manque atoi
Correction:
Serv_addr.sin_port=htons(atoi(argv[1]));
- la ligne 17.1 erreur dans le classement accepte toujours aprés bind
- la ligne 18: on utilise s au lieu de ss
Correction. :
if (bind(s,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
- la ligne 19: on utiluse ss au lieu de s
Correction:
read(ss,&data, sizeof(data));
- la ligne 21 : on utilise ss au lieu de s
Correction:
write (ss,&nbr,sizeof(nbr));
#include #include - Erreur de la fonction main : erreur en ajoute argc , argv
Correction:
Int main(int argc,char** argv)
La ligne 13: erreur lors de l'ecriture du socket pour que nous ayons deux processus a distance, nous utilisons donc INET au lieu d'UNIX
Correction:
S=socket (AF_INET ,SOCK_DGRAM ,0);
La ligne 15: toujours les processus a distances donc on utilise AF_INET au lieu de AF_UNIX
Correction:
Serv_addr.sin_family=AF_INEt;
La ligne 17: erreur manque atoi
Correction:
Serv_addr.sin_port=htons(atoi(argv[1]));
- la ligne 17.1 erreur dans le classement accepte toujours aprés bind
- la ligne 18: on utilise s au lieu de ss
Correction. :
if (bind(s,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
- la ligne 19: on utiluse ss au lieu de s
Correction:
read(ss,&data, sizeof(data));
- la ligne 21 : on utilise ss au lieu de s
Correction:
write (ss,&nbr,sizeof(nbr));
ligne 8 : erreurs en ajout argc et argv)
la réponse juste c’est : int main( int argc , char**argv)
-Ligne (13) : vous utilisez 'AF_UNIX' dans la fonction socket, alors que vous devriez probablement utiliser 'AF_INET' pour une adresse Internet.
la réponse juste c’est : s = socket(AF_INET, SOCK_DGRAM, 0);
-Ligne (15) : La valeur de 'serv_addr.sin_family' est définie à 'AF_UNIX', mais le code utilise ensuite des fonctions qui sont spécifiques à 'AF_INET'. Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
la réponse juste c’est : serv_addr.sin_family = AF_INET;
-ligne (16) : vous devez utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
la réponse juste c’est : serv_addr.sin_addr.s_addr = inet_addr("INADDR_ANY;");
-ligne (17) : htons nécessite un entier court non signé , donc il faut convertir argv[1] en un entier avant de l'utiliser.
la réponse juste c’est : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne (17-1) : il ya un erreur dans 'accepte()' le point virgule dans les paramètre .
la réponse juste c’est : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
-ligne (17-2) : il manque le point virgule dans la fonction 'exit()'.
la réponse juste c’est : exit(1);
-ligne 18 : erreur dans l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
la réponse juste c’est : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
Ligne (21) : Il manque un ";" après "write (s, &nbr, sizeof(nbr),0)".
la réponse juste c’est: : write(ss, &nbr, sizeof(nbr));
Ligne 20 : L'opération "nbr-nbr*2" n'a pas de sens car elle soustrait un nombre à lui-même et le multiplie ensuite par 2.
-ligne 22 : close(s);
la réponse juste c’est : close(ss);
la réponse juste c’est : int main( int argc , char**argv)
-Ligne (13) : vous utilisez 'AF_UNIX' dans la fonction socket, alors que vous devriez probablement utiliser 'AF_INET' pour une adresse Internet.
la réponse juste c’est : s = socket(AF_INET, SOCK_DGRAM, 0);
-Ligne (15) : La valeur de 'serv_addr.sin_family' est définie à 'AF_UNIX', mais le code utilise ensuite des fonctions qui sont spécifiques à 'AF_INET'. Vous devez changer 'AF_UNIX' à 'AF_INET' pour que le code fonctionne.
la réponse juste c’est : serv_addr.sin_family = AF_INET;
-ligne (16) : vous devez utiliser la fonction 'inet_addr()'pour définir l'adresse IP.
la réponse juste c’est : serv_addr.sin_addr.s_addr = inet_addr("INADDR_ANY;");
-ligne (17) : htons nécessite un entier court non signé , donc il faut convertir argv[1] en un entier avant de l'utiliser.
la réponse juste c’est : serv_addr.sin_port = htons(atoi(argv[1]));
-ligne (17-1) : il ya un erreur dans 'accepte()' le point virgule dans les paramètre .
la réponse juste c’est : ss = accept(s, (struct sockaddr*) &cli_addr, sizeof(cli_addr));
-ligne (17-2) : il manque le point virgule dans la fonction 'exit()'.
la réponse juste c’est : exit(1);
-ligne 18 : erreur dans l'appel à la fonction 'bind()' doit être effectué sur le socket d'écoute 's'et non sur le socket de connexion 'ss'.
la réponse juste c’est : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
Ligne (21) : Il manque un ";" après "write (s, &nbr, sizeof(nbr),0)".
la réponse juste c’est: : write(ss, &nbr, sizeof(nbr));
Ligne 20 : L'opération "nbr-nbr*2" n'a pas de sens car elle soustrait un nombre à lui-même et le multiplie ensuite par 2.
-ligne 22 : close(s);
la réponse juste c’est : close(ss);
Ligne(8): Il manque les paramètres dans la fct main()
=> int main(int argc , char*argv[])
Ligne(13): En utilise des adresses internet donc AF-UNIX n'est pas compatible
=> s= socket(AF_INET,SOCK_DGRAM,0);
Ligne(15): changement 'AF_UNIX' par 'AF_INET'
Ligne(16): il manque la fct 'inet_addr()'
=> inet_addr("127.0.0.1");
Ligne(17): convertir argv[1] nécessite atoi
=> =htons(atoi(argv[1]));
Ligne (17.1): accept vient après le bind, pas avant le
Le point vergule dans les paramètres de fct accept
Ligne(17.2)
=> exit(1);
Ligne(18): l'appel de la fct bind() effectué sur le socket d'écoute 's' non sur 'ss' (socket de cnx)
Ligne(19): read() effectué sur le socket de cnx
=> read(ss,&nbr,sizeof(data),0);
Ligne(21): 'write()' effectué sur le socket de cnx non sur socket d'écoute
Ligne(22): il manque de close() qui prend un description de fichier
=> close(ss);
=> int main(int argc , char*argv[])
Ligne(13): En utilise des adresses internet donc AF-UNIX n'est pas compatible
=> s= socket(AF_INET,SOCK_DGRAM,0);
Ligne(15): changement 'AF_UNIX' par 'AF_INET'
Ligne(16): il manque la fct 'inet_addr()'
=> inet_addr("127.0.0.1");
Ligne(17): convertir argv[1] nécessite atoi
=> =htons(atoi(argv[1]));
Ligne (17.1): accept vient après le bind, pas avant le
Le point vergule dans les paramètres de fct accept
Ligne(17.2)
=> exit(1);
Ligne(18): l'appel de la fct bind() effectué sur le socket d'écoute 's' non sur 'ss' (socket de cnx)
Ligne(19): read() effectué sur le socket de cnx
=> read(ss,&nbr,sizeof(data),0);
Ligne(21): 'write()' effectué sur le socket de cnx non sur socket d'écoute
Ligne(22): il manque de close() qui prend un description de fichier
=> close(ss);
CORRECTION DES ERREUR int main(int argc, char *argv[]) { int s, ss, nbr; struct sockaddr_in cli_addr, serv_addr; if (argc != 2) { printf("Usage: %s \n", argv[0]); exit(1); } s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) { perror("socket"); exit(1); } memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); serv_addr.sin_port = htons(atoi(argv[1])); if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { perror("bind"); exit(1); } if (read(ss, &nbr, sizeof(nbr)) < 0) { perror("read"); exit(1); } nbr -= nbr * 2; if (write(ss, &nbr, sizeof(nbr)) < 0) { perror("write"); exit(1); } close(ss); close(s); return 0; }
ligne 8 argc وargv إضافة
Dèclaration:
int main( int argc , char**argv)
-ligne 13 : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14
Sol : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 :
Sol : serv_addr.sin_family = AF_INET;
ligne 17 :
Sol : (atoi (argv[1]);
Dèclaration:
int main( int argc , char**argv)
-ligne 13 : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14
Sol : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 :
Sol : serv_addr.sin_family = AF_INET;
ligne 17 :
Sol : (atoi (argv[1]);
ligne 8 ( erreurs en ajout argc et argv)
correrction : int main( int argc , char**argv)
-ligne 13 (erreurs c'est le domaine de la socket)
correction : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14 ( erreur c'est les "" dans function perror , & 1 dans function exit )
correction : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 : ( erreur c 'est AF_UNIX)
correction : serv_addr.sin_family = AF_INET;
ligne 17 : (erreur c 'est htons (argv[1]);
correction : (atoi (argv[1]));
ligne 17 .1 : remarque accept vient aprés le bind , pas avant le bind
17.2 (erreur dand function perror , & exit(1) & le point firgule )
Ligne 18:
Erreur: Appel de bind() sur le mauvais socket.
Correction: Appeler bind() sur le socket d'écoute s : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18.1:
Erreur: Absence de l'appel exit().
Correction: Ajouter exit(1); après l'appel bind().
Ligne 19:
Erreur: Appel de read() sur le mauvais socket.
Correction: Appeler read() sur le socket de connexion ss : read(ss, &nbr, sizeof(nbr));.
Ligne 21:
Erreur: Appel de write() sur le mauvais socket.
Correction: Appeler write() sur le socket de connexion ss : write(ss, &nbr, sizeof(nbr));.
Ligne 22:
Erreur: Fonction close() sans argument.
Correction: Indiquer le descripteur de fichier à fermer : close(ss);.
correrction : int main( int argc , char**argv)
-ligne 13 (erreurs c'est le domaine de la socket)
correction : s = socket(AF_INET, SOCK_DGRAM,0);
-ligne 14 ( erreur c'est les "" dans function perror , & 1 dans function exit )
correction : if (s<0) {
perror ("socket");
exit(-1); }
ligne 15 : ( erreur c 'est AF_UNIX)
correction : serv_addr.sin_family = AF_INET;
ligne 17 : (erreur c 'est htons (argv[1]);
correction : (atoi (argv[1]));
ligne 17 .1 : remarque accept vient aprés le bind , pas avant le bind
17.2 (erreur dand function perror , & exit(1) & le point firgule )
Ligne 18:
Erreur: Appel de bind() sur le mauvais socket.
Correction: Appeler bind() sur le socket d'écoute s : if (bind(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0).
Ligne 18.1:
Erreur: Absence de l'appel exit().
Correction: Ajouter exit(1); après l'appel bind().
Ligne 19:
Erreur: Appel de read() sur le mauvais socket.
Correction: Appeler read() sur le socket de connexion ss : read(ss, &nbr, sizeof(nbr));.
Ligne 21:
Erreur: Appel de write() sur le mauvais socket.
Correction: Appeler write() sur le socket de connexion ss : write(ss, &nbr, sizeof(nbr));.
Ligne 22:
Erreur: Fonction close() sans argument.
Correction: Indiquer le descripteur de fichier à fermer : close(ss);.