Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //SERVER:
- #include "windows.h"
- #include "stdio.h"
- struct Mesaj {
- int numar[20];
- int lungime;
- };
- struct Rezultat {
- int min;
- int max;
- };
- void minMax (Mesaj mesaj, int &min, int &max) {
- for (int i = 0; i < mesaj.lungime; i++) {
- if (mesaj.numar[i] > max)
- max = mesaj.numar[i];
- if (mesaj.numar[i] < min)
- min = mesaj.numar[i];
- }
- }
- int main () {
- HANDLE inputPipe, outputPipe;
- Mesaj mesaj;
- printf("Initiez piepeurile si mesajul\n");
- while (true) {
- printf("Creez pipe\n");
- inputPipe = CreateNamedPipe ("\\\\.\\pipe\\Client2Server",
- PIPE_ACCESS_INBOUND,
- PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
- PIPE_UNLIMITED_INSTANCES,
- 0,
- sizeof(Mesaj),
- 0,
- NULL);
- printf("Pipe creat\n");
- ConnectNamedPipe (inputPipe,NULL);
- printf("Cineva s-a conectat la server\n");
- ReadFile (inputPipe, &mesaj,sizeof(Mesaj),NULL,NULL);
- printf("Server citeste mesaj\n");
- FlushFileBuffers(inputPipe);
- DisconnectNamedPipe(inputPipe);
- CloseHandle(inputPipe);
- int min = 0;
- int max = 0;
- minMax (mesaj, min, max);
- Rezultat rezultat;
- rezultat.max = max;
- rezultat.min = min;
- outputPipe = CreateFile ("\\\\.\\pipe\\Server2Client",
- GENERIC_READ | GENERIC_WRITE,
- 0,
- NULL,
- CREATE_ALWAYS,
- 0,
- NULL);
- WriteFile (outputPipe, &rezultat, sizeof(Rezultat),NULL,NULL);
- CloseHandle(outputPipe);
- }
- return 0;
- }
- //Client:
- #include "windows.h"
- #include "stdio.h"
- struct Mesaj {
- int numar[20];
- int lungime;
- };
- struct Rezultat {
- int min;
- int max;
- };
- int main () {
- HANDLE outputPipe, inputPipe;
- printf ("Clientul initiaza pipeurile\n");
- Mesaj mesaj;
- printf("Mesaj initializat, citim mesaj\n");
- printf("Lungime: ");
- scanf_s ("%d", &mesaj.lungime);
- for(int i=0; i<mesaj.lungime; i++)
- scanf("%d", &mesaj.numar[i]);
- printf("Client creaza pipe pentru a se conecta la server\n");
- // Creaza UN PIPE
- outputPipe = CreateFile ("\\\\.\\pipe\\Client2Server",
- GENERIC_WRITE,
- 0,
- NULL,
- CREATE_ALWAYS,
- 0,
- NULL);
- printf("Client scrie mesaj\n");
- // Scrie mesajul
- try {WriteFile (outputPipe, &mesaj, sizeof(Mesaj), NULL, NULL);}
- catch(int e) {
- printf("%d, Error: %d", GetLastError, e);
- }
- printf("Mesajul a fost scris\n");
- CloseHandle(outputPipe);
- inputPipe = CreateNamedPipe ("\\\\.\\pipe\\Server2Client", // Client citeste din outputul serverului
- PIPE_ACCESS_INBOUND,
- PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
- PIPE_UNLIMITED_INSTANCES,
- 0,
- sizeof(Rezultat),
- 0,
- NULL);
- // Asteptam sa trimita serverul un rezultat
- ConnectNamedPipe (inputPipe, NULL);
- Rezultat rezultat;
- ReadFile(&inputPipe, &rezultat, sizeof(Rezultat), NULL, NULL);
- printf("Maximul este: %d \n", rezultat.max);
- printf("Minimul este: %d \n", rezultat.min);
- // Acum distrugem pipe-ul
- FlushFileBuffers(inputPipe);
- DisconnectNamedPipe(inputPipe);
- CloseHandle(inputPipe);
- }
Advertisement
Add Comment
Please, Sign In to add comment