![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| High Level Programming Posez vos questions à propos de C, C + +, Java, SQL, et d'autres langages de programmation ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| le client et le serveur de programmes | JCR | High Level Programming | 8 | 04-28-2009 05:06 PM |
| Client / Server Edition | geauxtn | AIX | 5 | 07-30-2007 09:38 AM |
| client / serveur | fût | UNIX pour les nuls Questions et réponses | 2 | 10-30-2006 02:19 AM |
| ntp ntp serveur et client | bubba112557 | SUN Solaris | 1 | 05-10-2005 11:37 AM |
| PIPEs et des canaux nommés (FIFO) Buffer size | Jus | Systèmes de fichiers, disques et mémoire | 1 | 08-20-2004 11:14 AM |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
||||
|
client / serveur tuyaux
voici le concept: le client lit le chemin de l'entrée standard et écrit à pipe1.The serveur lit ce chemin de la pipe1 et essaie d'ouvrir le fichier pour le serveur reading.If pouvez ouvrir le fichier, le serveur répond par la lecture du fichier et d'écriture, il à pipe2, sinon le serveur écrit un message d'erreur à la même pipe.The client puis lit et écrit le pipe2 qu'elle reçoit à la sortie standard voici mon code: Code:
#include <stdio.h>
#include <string.h>
#define maxsize 1000
char buffer [maxsize];
void client(int readfd,int writefd)
{
puts("give pathname:");
gets(buffer);
write(writefd,buffer,strlen(buffer));
//sleep(10);
while((read(readfd,buffer,strlen(buffer)))>0);
printf("%s/n",buffer);
}
void server(int readfd,int writefd)
{
FILE * fp;
char line[100];
//sleep(10);
read(readfd,buffer,strlen(buffer));
fp=fopen(buffer,"r");
if(fp==NULL)
{
strcpy(buffer,"cannot oepn file");
write(writefd,buffer,strlen(buffer));
}
else
while(fgets(line,100,fp)!=NULL)
write(writefd,line,100);
}
int main()
{
int pipe1[2],pipe2[2];
int childpid;
int status;
pipe(pipe1);
pipe(pipe2);
childpid=fork();
if(childpid>0)
{
close(pipe1[0]);
close(pipe2[1]);
client(pipe2[0],pipe1[1]);
wait(&status);
exit(0);
}
else
{
close(pipe1[1]);
close(pipe2[0]);
server(pipe1[0],pipe2[1]);
exit(0);
}
}
En fait, je comprends qu'il peut y avoir quelques problèmes avec les conditions de course que la raison pour laquelle j'ai mis 2 commandes de sommeil, mais ne fonctionne toujours pas .. En général, je tiens à sychronize le lire et écrire des commandes du client et serveur, mais je ne sais pas comment ... si quelqu'un a le temps de voir le code et me donner quelques conseils, il sera vraiment apprécié ..... merci d'avance .. |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|