123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #include <Windows.h>
- #include <malloc.h>
- #include <stdio.h>
- #include <locale.h>
- #define SIWPO_SIZE 140
- #define MAX_BUF_SIZE 1024
- int main()
- {
- system("chcp 1251");
- //HANDLE hNamePipie;// дескриптор канала
- //LPSTR lipzPipe = L"\\\\.\\pipe\\MyPipe";//имя канала (путь к каналу) . указатель на локальный хост
- //DWORD vis_size = SIWPO_SIZE;
- //LPWSTR buffer = (CHAR*)calloc(vis_size, sizeof(CHAR));// сюда считаем файлы(данные)
- //char messege[SIWPO_SIZE];
- //BOOL Conected;
- //DWORD actual_reader;
- //BOOL SecceRead;
- //
- // while (TRUE)
- // {
- // hNamePipie = CreateNamedPipe(lipzPipe,PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,PIPE_UNLIMITED_INSTANCES, SIWPO_SIZE, SIWPO_SIZE,INFINITE,NULL);
- // //создание канала (имя канала(путь), режим доступа к каналу сим или дуп, что может делать канал( режим работы), количество соединений,обьем буфера,время ожидания,безопасность)
- // Conected = ConnectNamedPipe(hNamePipie, NULL);// определяет клиент к серверу или нет (соединение клиента с каналом)
- // if (Conected)//
- // {
- // printf("\nКлиент успешно подключился \n");
- // SecceRead = ReadFile(hNamePipie, buffer, vis_size, &actual_reader, NULL);//куда прочитал, сколько прочитал, сколько с самого начала считается, читает с начала
- // if (SecceRead)
- // {
- // printf("\nКлиент пишет..\n");
- // printf(buffer);
- // printf("\n");
- //
- // printf("\nВведите сообщение для клиента....\n");
- // gets(messege);
- // buffer = &messege;
- // WriteFile(hNamePipie, buffer, vis_size, &actual_reader, NULL);
- //
- //
- // }
- // else
- // {
- // printf("\nКлиент успешно пошел на \n");
- // }
- //
- // CloseHandle(hNamePipie);
- // }
- // }
- //
- //
- HANDLE hNamePipie;// дескриптор канала
- LPSTR lipzPipe = L"\\\\.\\pipe\\MyPipe";
- char read_buf[MAX_BUF_SIZE];
- char write_buf[MAX_BUF_SIZE];
- while (1)
- {
- // Открытие именованного канала для чтения
- hNamePipie = CreateNamedPipe(lipzPipe, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, SIWPO_SIZE, SIWPO_SIZE, INFINITE, NULL);
- // Чтение данных от клиента
- read(hNamePipie, read_buf, sizeof(read_buf));
- // Преобразование строки в число
- int number = atoi(read_buf);
- // Проверка корректности ввода
- if (number == 0 && strcmp(read_buf, "0") != 0)
- {
- // Формирование сообщения об ошибке
- snprintf(write_buf, sizeof(write_buf), "Некорректный ввод: '%s'", read_buf);
- }
- else
- {
- // Возведение числа в квадрат
- int square = number * number;
- // Преобразование числа в строку
- snprintf(write_buf, sizeof(write_buf), "%d", square);
- }
- // Закрытие именованного канала для чтения
- close(hNamePipie);
- // Открытие именованного канала для записи
- hNamePipie = CreateNamedPipe(lipzPipe, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, SIWPO_SIZE, SIWPO_SIZE, INFINITE, NULL);
- // Запись результата в канал
- write(hNamePipie, write_buf, strlen(write_buf) + 1);
- // Закрытие именованного канала для записи
- close(hNamePipie);
- }
- return 0;
- }
|