Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //clientul ---
- /*
- Se cere un server si unul sau mai multi clienti.
- Fiecare client trimite catre server un nume de fisier text.
- Serverul citeste continutul fisierului si ii intoarce clientului
- primele trei linii in ordine alfabetica din cadrul fisierului.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <string.h>
- int main(int argc, char* argv[])
- {
- printf("Incepe programul \n");
- int ClientToServer,ServerToClient;
- int lungime;
- char *command = malloc((strlen(argv[1])+100)*sizeof(char));
- printf("Linia 17 \n");
- memset(command,0,(strlen(argv[1])+100)*sizeof(char));
- // strcat(command,argv[1]);
- char *bufferfinal = malloc(300*sizeof(char));
- printf("Acum deschis pipe-urile \n");
- ClientToServer = open("ClientToServer",O_WRONLY);
- ServerToClient = open("ServerToClient",O_RDONLY);
- printf("Am deschis pipe-urile \n");
- // strcpy(command,"head -n 3 ");
- strcpy(command,"who");
- // strcat(command,argv[1]);
- // strcat(command,"| sort ");
- printf("Acum urmeaza sa scriu catre server \n");
- printf("Verific variabila command unde am format comanda: %s \n",command);
- lungime = strlen(command);
- printf("Lungimea comenzii e de %d caractere",lungime);
- write(ClientToServer,&lungime,sizeof(int));
- write(ClientToServer,command,sizeof((strlen(command) + 100)*sizeof(char)));
- printf("Am scris , imediat citesc \n");
- read(ServerToClient,bufferfinal,300*sizeof(char));
- printf("Am citit asta: %s \n",bufferfinal);
- printf("%s \n",bufferfinal);
- free(command);
- free(bufferfinal);
- close(ClientToServer);
- close(ServerToClient);
- return 0;
- }
- //server-----------
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <string.h>
- int main()
- {
- printf("Abia ce am intrat in program \n");
- int ClientToServer,ServerToClient;
- printf("Deschid pipe-urile \n");
- ClientToServer = open("ClientToServer",O_RDONLY);
- ServerToClient = open("ServerToClient",O_WRONLY);
- printf("Acu am deschis pipe-urile");
- // char *command= malloc (200*sizeof(char));
- char *command = malloc(300*sizeof(char));
- memset(command,0,300*sizeof(char));
- char *buffer1 = malloc(100*sizeof(char));
- char *buffer2 = malloc(100*sizeof(char));
- char *buffer3 = malloc(100*sizeof(char));
- printf("Am ajuns exact inainte de citire \n");
- printf("Citesc lungimea comenzii \n");
- int lungime;
- read(ClientToServer,&lungime,sizeof(int));
- printf("i-am citit lungimea %d \n",lungime);
- lungime++; // am adaugat +1 la lungime
- read(ClientToServer,command,lungime*sizeof(char));
- printf("Am citit comanda de la client %s \n",command);
- printf("Am ajuns in server imediat dupa citire de la client \n");
- char *bufferfinal=(char*) malloc (300 * sizeof(char));
- memset(bufferfinal,0,300);
- FILE *file = popen(command, "r");
- fgets(buffer1,100,file);
- strcpy(bufferfinal,buffer1);
- fgets(buffer2,100,file);
- strcat(bufferfinal,buffer2);
- fgets(buffer3,100,file);
- strcat(bufferfinal,buffer3);
- printf("Am format bufferfinal cu continutul %s",bufferfinal);
- printf("Am ajuns in server pana inainte de write \n");
- write(ServerToClient,bufferfinal,(strlen(bufferfinal) + 10)*sizeof(char));
- printf("Am ajuns in server imediat dupa write \n");
- // free(command);
- free(buffer1);
- free(buffer2);
- free(buffer3);
- free(bufferfinal);
- close(ClientToServer);
- close(ServerToClient);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement