123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #include <Windows.h>
- #include <malloc.h>
- #include <stdio.h>
- #include <locale.h>
- #define MAX_BUF_SIZE 1024
- #define SIZE_BUFFER 140
- int main()
- {
- system("chcp 1251");
- LPSTR lipzPipe = L"\\\\.\\pipe\\MyPipe";
- DWORD vis_size = SIZE_BUFFER;
- DWORD actual_WRITER;
- DWORD actual_reader;
- LPWSTR buffer = (CHAR*)calloc(vis_size, sizeof(CHAR));// сюда считаем файлы(данные)
- char messege[SIZE_BUFFER];
- BOOL flag_otvet = TRUE;
- BOOL SecceRead;
- HANDLE hNamePipe;//Дескриптор файла
- //while (TRUE)
- //{
- // hNamePipe = CreateFile(lipzPipe, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);//открываем канал, по аналогии с кналом
- // /*WaitNamedPipe(lipzPipe, INFINITE);*/
- // DWORD dwMode = PIPE_READMODE_MESSAGE;
- // BOOL IsSSSS = SetNamedPipeHandleState(hNamePipe, &dwMode, NULL, NULL);
- // if (!IsSSSS)
- // {
- // printf("\nСервер не отвечает \n");
- // flag_otvet = TRUE;
- // }
- // else
- // {
- // if (flag_otvet)
- // {
- // printf("введите сообщение для сервера: \n");
- // gets(messege);
- // buffer = &messege;
- // WriteFile(hNamePipe, buffer, vis_size, &actual_WRITER, NULL);
- // flag_otvet = FALSE;
- // }
- // SecceRead = ReadFile(hNamePipe, buffer, SIZE_BUFFER, &actual_reader, NULL);
- // if (SecceRead)
- // {
- // printf("\nСервер пишет и пишет..\n");
- // printf(buffer);
- // printf("\n");
- // flag_otvet = TRUE;
- // if (buffer == NULL)
- // {
- // printf("Пусто");
- // }
- // }
- // }
- // Sleep(30000);
- // CloseHandle(hNamePipe);
- //}
- char read_buf[MAX_BUF_SIZE];
- char write_buf[MAX_BUF_SIZE];
- // Открытие именованного канала для записи
- hNamePipe = CreateFile(lipzPipe, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
- while (1)
- {
- // Ввод числа
- int number;
- printf("Введите число: ");
- scanf_s("%d", &number);
- // Преобразование числа в строку
- snprintf(write_buf, sizeof(write_buf), "%d", number);
- // Запись числа в канал
- write(hNamePipe, write_buf, strlen(write_buf) + 1);
- // Открытие именованного канала для чтения
- SecceRead = ReadFile(hNamePipe, buffer, MAX_BUF_SIZE, &actual_reader, NULL);
- // Чтение результата от сервера
- read(hNamePipe, read_buf, sizeof(read_buf));
- // Вывод результата
- printf("Результат: %s\n", read_buf);
- // Закрытие именованного канала для чтения
- CloseHandle(hNamePipe);
- // Открытие именованного канала для записи
- hNamePipe = CreateFile(lipzPipe, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
- }
- // Закрытие именованного канала для записи
- CloseHandle(hNamePipe);
- return 1;
- }
|