bonjour,
j'ai un probleme qui m'a vraiment embété mes amis,tout compile sans des erreurs,sauf que à l'execution il m'apparait relais brisé du coté serveur,et du coté client il m'ecrit "l'inverse est ?" donc pa d'affichage correcte,voilà le but et de créer deu tube nommé , l'un question et l'autre reponse,le client vas envoyer au serveur (à travers le tube question) une suite de mot entré en argument du coté client ,puis le serveur vas inverser ses mot(mot par mot et non pas toute une phrase ensemble),puis il vas les envoyer au client les mot inversé un par un dans le tube reponse.voilà les deu code client et seveur,je sai pas ou se magnifeste l'erreur alors slvp de l'aide
clode serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
char* inverse(char* ch)
{
char* chi;
int i,k=0;
chi=(char*)malloc(strlen(ch)*sizeof(char)+1);
for(i=strlen(ch)+1;i>0;i--)
{
chi[k]=ch[i];
k++;
}
chi[k]='\0';
return(chi);
}
int main()
{
int fdq,fdr;
int i,l,nbr;
char ch[100];
mknod("question",S_IFIFO|0664,0);
mknod("reponse",S_IFIFO|0664,0);
while(1)
{
fdq=open("question",O_RDONLY);
read(fdq,&nbr,sizeof(int));
fdr=open("reponse",O_WRONLY);
for(i=0;i<nbr;i++)
{
read(fdq,&l,sizeof(int));
read(fdq,ch,l);
write(fdr,&l,sizeof(int));
write(fdr,inverse(ch),l);
}
}
puts("ecriture terminé");
close(fdq);
close(fdr);
}
code client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
int main(int argc,char** argv)
{
int fdq,fdr;
int nbr,l,i;
char ch[100];
fdq=open("question",O_WRONLY);
nbr=argc-1;
write(fdq,&nbr,sizeof(int));
for(i=1;i<argc;i++)
{
l=(strlen(argv[i])+1);
write(fdq,&l,sizeof(int));
write(fdq,argv[i],l);
}
fdr=open("reponse",O_RDONLY);
for(i=0;i<nbr;i++)
{
read(fdr,&l,sizeof(int));
read(fdr,ch,l);
printf("le mot inverse est %s",ch);
}
puts("lecture terminé");
close(fdq);
close(fdr);
}