Part B-2

 

P6client.c

#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

#include<string.h>

#include<fcntl.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<unistd.h>

 

#define FIFO1 "fifo1"

#define FIFO2 "fifo2"

 

int main()

     {

       char p[100], f[100], c[300];

       int num, num2, f1,fd,fd2;

           mknod(FIFO1, S_IFIFO | 0666, 0);

       mknod(FIFO2, S_IFIFO|0666, 0);

          printf("\n\n waiting for server......\n\n\n");

          fd = open ( FIFO1, O_WRONLY);

          printf("\n\n\n server online !! Enter the path .....\n\n");

 

       while  (scanf ("%s", &p) && (!feof(stdin)))

            { if( ( num=write(fd,p,strlen(p))) == -1)

                perror("\n\nwrite Error");

         else

            { printf("\n\nwaiting for reply....\n\n");

              fd2 = open(FIFO2, O_RDONLY);

              if((num2= read(fd2, c,300)) ==-1)

                 perror("\n\n transfer error....\n\n");

             else

                { printf("\n\n File received.Showin contents..\n");

                if (fputs(c,stdout)==EOF)

                   perror("print Error ....\n\n");

               exit(1);

                }

        }

    }

   }

 

P6server.c

#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

#include<string.h>

#include<fcntl.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<unistd.h>

 

#define FIFO1 "fifo1"

#define FIFO2 "fifo2"

 

int main()

 

   { char p[100], f[100], c[100];

     int num, num2, f1,fd,fd2;

     mknod (FIFO1, S_IFIFO | 0666, 0);

     mknod (FIFO2, S_IFIFO | 0666, 0);

     printf("\n\n SERVER ONLINE........\n\n\n");

     fd = open(FIFO1, O_RDONLY);

     printf("\n\n\n wait for request.......\n\n");

     while(1)

        { if ((num=read(fd,p,100)) == -1)

              perror("\n\n READ error\n\n");

          else

             {  p[num] = '\0';

                if((f1 = open(p, O_RDONLY)) < 0)

                     { printf("\n\nServer : %s not found", p);

        exit(1);}

 

               else

                  { printf ("\nserver : %s is found.transferring", p);

                   stdin = fdopen(f1, "r");

                  if(fgets(c, 1024,stdin) !=NULL)

                      {fd2 = open(FIFO2, O_WRONLY);

                        if(num2=write(fd2,c,strlen(c)) ==-1)

                           perror("\n\ntransfer error.....\n\n");

                     else

                       printf("\nserver transfer complete!!\n");

 

                    }

            elseperror ("\n\nRead Error!! \n\n");

                exit(1);

               }

        }

    }

}

Comments