Advertisement
Guest User

Untitled

a guest
May 30th, 2013
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.63 KB | None | 0 0
  1. //clientul ---
  2. /*
  3. Se cere un server si unul sau mai multi clienti.
  4. Fiecare client trimite catre server un nume de fisier text.
  5. Serverul citeste continutul fisierului si ii intoarce clientului
  6. primele trei linii in ordine alfabetica din cadrul fisierului.
  7. */
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <unistd.h>
  11. #include <sys/types.h>
  12. #include <sys/stat.h>
  13. #include <fcntl.h>
  14. #include <string.h>
  15. int main(int argc, char* argv[])
  16. {
  17.     printf("Incepe programul \n");
  18.     int ClientToServer,ServerToClient;
  19.     int lungime;
  20.     char *command = malloc((strlen(argv[1])+100)*sizeof(char));
  21.     printf("Linia 17 \n");
  22.     memset(command,0,(strlen(argv[1])+100)*sizeof(char));
  23. //    strcat(command,argv[1]);
  24.     char *bufferfinal = malloc(300*sizeof(char));
  25.     printf("Acum deschis pipe-urile \n");
  26.     ClientToServer = open("ClientToServer",O_WRONLY);
  27.     ServerToClient = open("ServerToClient",O_RDONLY);
  28.     printf("Am deschis pipe-urile \n");
  29. //    strcpy(command,"head -n 3 ");
  30.     strcpy(command,"who");
  31. //    strcat(command,argv[1]);
  32. //    strcat(command,"| sort ");
  33.     printf("Acum urmeaza sa scriu catre server \n");
  34.     printf("Verific variabila command unde am format comanda: %s \n",command);
  35.     lungime = strlen(command);
  36.     printf("Lungimea comenzii e de %d caractere",lungime);
  37.     write(ClientToServer,&lungime,sizeof(int));
  38.     write(ClientToServer,command,sizeof((strlen(command) + 100)*sizeof(char)));
  39.     printf("Am scris , imediat citesc \n");
  40.     read(ServerToClient,bufferfinal,300*sizeof(char));
  41.     printf("Am citit asta:   %s      \n",bufferfinal);
  42.     printf("%s \n",bufferfinal);
  43.     free(command);
  44.     free(bufferfinal);
  45.     close(ClientToServer);
  46.     close(ServerToClient);
  47. return 0;
  48. }
  49.  
  50.  
  51.  
  52. //server-----------
  53. #include <stdio.h>
  54. #include <stdlib.h>
  55. #include <unistd.h>
  56. #include <sys/types.h>
  57. #include <sys/stat.h>
  58. #include <fcntl.h>
  59. #include <string.h>
  60. int main()
  61. {
  62.     printf("Abia ce am intrat in program \n");
  63.     int ClientToServer,ServerToClient;
  64.     printf("Deschid pipe-urile \n");
  65.     ClientToServer = open("ClientToServer",O_RDONLY);
  66.     ServerToClient = open("ServerToClient",O_WRONLY);
  67.     printf("Acu am deschis pipe-urile");
  68. //    char *command= malloc (200*sizeof(char));
  69.     char *command = malloc(300*sizeof(char));
  70.     memset(command,0,300*sizeof(char));
  71.     char *buffer1 = malloc(100*sizeof(char));
  72.     char *buffer2 = malloc(100*sizeof(char));
  73.     char *buffer3 = malloc(100*sizeof(char));
  74.     printf("Am ajuns exact inainte de citire \n");
  75.     printf("Citesc lungimea comenzii \n");
  76.     int lungime;
  77.     read(ClientToServer,&lungime,sizeof(int));
  78.     printf("i-am citit lungimea %d \n",lungime);
  79.     lungime++; // am adaugat +1 la lungime
  80.     read(ClientToServer,command,lungime*sizeof(char));
  81.     printf("Am citit comanda de la client %s \n",command);
  82.     printf("Am ajuns in server imediat dupa citire de la client \n");
  83.     char *bufferfinal=(char*) malloc (300 * sizeof(char));
  84.     memset(bufferfinal,0,300);
  85.     FILE *file = popen(command, "r");
  86.     fgets(buffer1,100,file);
  87.     strcpy(bufferfinal,buffer1);
  88.     fgets(buffer2,100,file);
  89.     strcat(bufferfinal,buffer2);
  90.     fgets(buffer3,100,file);
  91.     strcat(bufferfinal,buffer3);
  92.     printf("Am format bufferfinal cu continutul %s",bufferfinal);
  93.     printf("Am ajuns in server pana inainte de write \n");
  94.     write(ServerToClient,bufferfinal,(strlen(bufferfinal) + 10)*sizeof(char));
  95.     printf("Am ajuns in server imediat dupa write \n");
  96. //    free(command);
  97.     free(buffer1);
  98.     free(buffer2);
  99.     free(buffer3);
  100.     free(bufferfinal);
  101.     close(ClientToServer);
  102.     close(ServerToClient);
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement