Ошибка в ConnectNamedPipe

83
12 января 2022, 12:00

Очень нужна помощь, создал приложение сервер которое создает канал и подключается к нему, но функция под вторым пунктом меню - ConnectNamedPipe, возвращает ошибку через getlasterror - 997(ERROR_IO_PENDING), подскажите в чем может быть проблема? К каналу я подключаюсь после создания канала(после первого пункта меню).

int menu()
{
int choise = 0;
cout << "1 - Create the Pipe" << endl;
cout << "2 - Connect the Pipe" << endl;
cout << "3 - Write to the Pipe" << endl;
cout << "4 - Disconnect the Pipe" << endl;
cout << "0 - Exit" << endl;
cin >> choise;
return choise;
}
int main() {
setlocale(LC_ALL, "Russian");
///*
HANDLE hPipe = NULL;
OVERLAPPED overlapped = OVERLAPPED();
overlapped.hEvent = CreateEvent(NULL, true, false, NULL);
overlapped.Offset = 0;
overlapped.OffsetHigh = 0;
char buffer[512];
int choise = menu();
while (choise != 0) {
    switch (choise)
    {
    case 1:
    {
        hPipe = CreateNamedPipe("\\\\.\\pipe\\myPipe1", (PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED), PIPE_TYPE_MESSAGE, 1, 512, 512, 0, NULL);
        if (hPipe != INVALID_HANDLE_VALUE) {
            cout << "Pipe was created\n";
        }
        else {
            cout << "Can't create the pipe\n";
            system("pause");
        }
        break;
    }
    case 2:
    {
        if (hPipe == NULL) {
            cout << "vdvdfvdvfvd\n";
        }
        bool connected = ConnectNamedPipe(hPipe, &overlapped);
        if (connected)
        {
            cout << "Connected to the pipe\n";
        }
        else {
            DWORD connectedError = GetLastError();
            cout << connectedError;
        }
        //if (ConnectNamedPipe(hPipe, NULL)) {
        //  cout << "Connected to the pipe\n";
        //}
        //else {
        //  cout << "Can't connect the pipe\n";
        //}
        break;
    }
    case 3:
    {
        ZeroMemory(buffer, 0);
        cout << "Enter message: ";
        cin >> buffer;
        WriteFile(hPipe, buffer, strlen(buffer) + 1, NULL, &overlapped);
        WaitForSingleObject(overlapped.hEvent, INFINITE);
        cout << "Written\n";
        break;
    }
    case 4:
    {
        DisconnectNamedPipe(hPipe);
        CloseHandle(overlapped.hEvent);
    }
    }
    cout << "\n";
    choise = menu();
}
system("pause");
READ ALSO
Структура внутри которой массив других структур

Структура внутри которой массив других структур

Как я могу создать массив структур внутри которой будут массивы других структур? Например: есть class students , мне нужна новая stuct theclass внутри которой...

136
Изменение размеров индикатора QCheckBox

Изменение размеров индикатора QCheckBox

Требуется изменить размер поля для галочки в QCheckBoxПробовал сделать это с помощью настройки стиля:

93
C# ASP.NET WEB API: Не проходят POST и PUT операции

C# ASP.NET WEB API: Не проходят POST и PUT операции

Возникла проблема при написании приложения: GET и DELETE операции проходят, а PUT и POST нет

142
Как сделать цикл While по тикам

Как сделать цикл While по тикам

метод Update в c# выполняет определённый ряд действий каждый кадрПредроложим, что я хочу сделать медленное увеличение предмета

188