Advertisement
AlukardBF

os_laba3katya_client

Apr 3rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <conio.h>
  4. #include <ctime>
  5. using namespace std;
  6.  
  7. HANDLE hM;
  8.  
  9. int main()
  10. {
  11.     srand(time(NULL));
  12.     int a[] = { rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10 };
  13.     hM = CreateMutex(NULL, FALSE, L"name");
  14.     //Ждем свободного ConectNamedPipe на сервере
  15.     WaitNamedPipe(L"\\\\.\\pipe\\laba", INFINITE);
  16.     //Большая часть параметров не важны для pipe
  17.     HANDLE pipe = CreateFile(
  18.         L"\\\\.\\pipe\\laba",
  19.         GENERIC_READ,   //нужно только чтение
  20.         FILE_SHARE_READ | FILE_SHARE_WRITE,
  21.         NULL,
  22.         OPEN_EXISTING,
  23.         FILE_ATTRIBUTE_NORMAL,
  24.         NULL
  25.     );
  26.  
  27.     //Изначально в разблокированном состоянии
  28.     int fl = 2;
  29.     DWORD numBytesRead = 0;
  30.  
  31.     do
  32.     {
  33.         if (PeekNamedPipe(pipe, NULL, 0, NULL, &numBytesRead, NULL) && numBytesRead > 0)
  34.         {
  35.             ReadFile(
  36.                 pipe,
  37.                 &fl,                    //данные из pipe будут записаны сюда
  38.                 sizeof(int),                    //кол-во выделенных буффером байт
  39.                 &numBytesRead,                  //действительное кол-во байт для хранения
  40.                 NULL                            //не использовать overlapped I/O
  41.             );
  42.         }
  43.         if (fl == 2 && WaitForSingleObject(hM, 0) == WAIT_OBJECT_0) {
  44.             //WaitForSingleObject(hM, INFINITE);
  45.             //system("cls");
  46.             a[rand() % 10] = rand() % 10;
  47.             for (int i = 0; i<10; i++)
  48.                 cout << a[i];
  49.             cout << endl;
  50.             ReleaseMutex(hM);
  51.             Sleep(1000);
  52.         }
  53.     } while (fl != 0);
  54.     CloseHandle(pipe);
  55.     CloseHandle(hM);
  56.     return (0);
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement