KanalKlient.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #include <Windows.h>
  2. #include <malloc.h>
  3. #include <stdio.h>
  4. #include <locale.h>
  5. #define MAX_BUF_SIZE 1024
  6. #define SIZE_BUFFER 140
  7. int main()
  8. {
  9. system("chcp 1251");
  10. LPSTR lipzPipe = L"\\\\.\\pipe\\MyPipe";
  11. DWORD vis_size = SIZE_BUFFER;
  12. DWORD actual_WRITER;
  13. DWORD actual_reader;
  14. LPWSTR buffer = (CHAR*)calloc(vis_size, sizeof(CHAR));// сюда считаем файлы(данные)
  15. char messege[SIZE_BUFFER];
  16. BOOL flag_otvet = TRUE;
  17. BOOL SecceRead;
  18. HANDLE hNamePipe;//Дескриптор файла
  19. //while (TRUE)
  20. //{
  21. // hNamePipe = CreateFile(lipzPipe, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);//открываем канал, по аналогии с кналом
  22. // /*WaitNamedPipe(lipzPipe, INFINITE);*/
  23. // DWORD dwMode = PIPE_READMODE_MESSAGE;
  24. // BOOL IsSSSS = SetNamedPipeHandleState(hNamePipe, &dwMode, NULL, NULL);
  25. // if (!IsSSSS)
  26. // {
  27. // printf("\nСервер не отвечает \n");
  28. // flag_otvet = TRUE;
  29. // }
  30. // else
  31. // {
  32. // if (flag_otvet)
  33. // {
  34. // printf("введите сообщение для сервера: \n");
  35. // gets(messege);
  36. // buffer = &messege;
  37. // WriteFile(hNamePipe, buffer, vis_size, &actual_WRITER, NULL);
  38. // flag_otvet = FALSE;
  39. // }
  40. // SecceRead = ReadFile(hNamePipe, buffer, SIZE_BUFFER, &actual_reader, NULL);
  41. // if (SecceRead)
  42. // {
  43. // printf("\nСервер пишет и пишет..\n");
  44. // printf(buffer);
  45. // printf("\n");
  46. // flag_otvet = TRUE;
  47. // if (buffer == NULL)
  48. // {
  49. // printf("Пусто");
  50. // }
  51. // }
  52. // }
  53. // Sleep(30000);
  54. // CloseHandle(hNamePipe);
  55. //}
  56. char read_buf[MAX_BUF_SIZE];
  57. char write_buf[MAX_BUF_SIZE];
  58. // Открытие именованного канала для записи
  59. hNamePipe = CreateFile(lipzPipe, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
  60. while (1)
  61. {
  62. // Ввод числа
  63. int number;
  64. printf("Введите число: ");
  65. scanf_s("%d", &number);
  66. // Преобразование числа в строку
  67. snprintf(write_buf, sizeof(write_buf), "%d", number);
  68. // Запись числа в канал
  69. write(hNamePipe, write_buf, strlen(write_buf) + 1);
  70. // Открытие именованного канала для чтения
  71. SecceRead = ReadFile(hNamePipe, buffer, MAX_BUF_SIZE, &actual_reader, NULL);
  72. // Чтение результата от сервера
  73. read(hNamePipe, read_buf, sizeof(read_buf));
  74. // Вывод результата
  75. printf("Результат: %s\n", read_buf);
  76. // Закрытие именованного канала для чтения
  77. CloseHandle(hNamePipe);
  78. // Открытие именованного канала для записи
  79. hNamePipe = CreateFile(lipzPipe, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
  80. }
  81. // Закрытие именованного канала для записи
  82. CloseHandle(hNamePipe);
  83. return 1;
  84. }