The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > High Level Programming
.
google unix.com



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

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 08-23-2008
tolkki tolkki is offline
Registered User
  
 

Join Date: Mar 2008
Messages: 7
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
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 01:13 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0