The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > High Level Programming
.
google unix.com



High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
klient och server-program JCR High Level Programming 8 04-28-2009 05:06
Client / Server Utgåva geauxtn AIX 5 07-30-2007 09:38
client / server TRÄDSTAM UNIX for Dummies Frågor & Svar 2 10-30-2006 02:19
NTP-server och ntp-klient bubba112557 Sun Solaris 1 05-10-2005 11:37
Rörledningar och namngivna rör (FIFU) Buffertstorlek Jus Filsystem, diskar och Minne 1 08-20-2004 11:14

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 08-23-2008
tolkki tolkki is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 7
client / server rören

Här är konceptet:

kunden läser en sökväg från standard input och skriver den till pipe1.The servern läser denna sökväg från pipe1 och försöker öppna filen för reading.If servern kan öppna filen, servern svarar med att läsa filen och skriftligen det att pipe2, annars servern skriver ett felmeddelande till samma pipe.The kunden då läser från pipe2 och skriver den får till standard output

här är min kod:


Kod:
#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);
    }

}

Faktiskt, jag förstår att det kan finnas vissa problem med ras villkor Det är därför jag lagt 2 sömn kommandon men ändå inte fungerar ..
generellt vill jag sychronize att läsa och skriva kommandon för klient och server men jag vet inte hur ...
om någon har tid att se koden och ge mig några råd, det kommer verkligen vara uppskattat ..... tack på förhand ..
 

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är På
Smilies är På
[IMG] kod PÃ¥
HTML-koden är Av
Trackback är På
Pingbacks är På
Refbacks är På




Alla tider är GMT -4. Klockan är nu 03:24.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0