#include #include #include #include #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; }