Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > [named pipe] теряется доступ


Автор: Alix36 1.5.2012, 22:34
Существует группа клиент-приложений пересылающих друг-другу сообщения по именованному каналу. 
Периодически начинают отпадать клиенты на этапе чтения/записи в  канал.

Вопрос, насколько многозадачны именованные каналы? мог я упереться в технологические ограничения, или тут причина только моя криворукость?

кусок кода, слушатель канала
Код

 while(1){
        HANDLE handle_to_pipe = CreateNamedPipe(pipe_name,
                     PIPE_ACCESS_DUPLEX,
                    PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
                    PIPE_UNLIMITED_INSTANCES,
                     buf_size,
                    buf_size,
                    0,
                    NULL);
        if(handle_to_pipe == INVALID_HANDLE_VALUE)
        {
            Log("Can't create pipe!");
            return 0;
        }
        bool connection_flag = ConnectNamedPipe(handle_to_pipe, NULL);
        if(connection_flag)
        {
            succession_flag = ReadFile(handle_to_pipe, request, buf_size * sizeof(TCHAR),
                           &read_bytes, NULL);
                           // обработчик
        }
        else
            CloseHandle(handle_to_pipe);
        }


Писатель
Код

      HANDLE handle_to_pipe = CreateFile(pipe_name, GENERIC_READ | GENERIC_WRITE,
                       0, NULL, OPEN_EXISTING, 0, NULL);
    if(handle_to_pipe == INVALID_HANDLE_VALUE)
    {
                ShowMessage("Неудалось отправить сообщение");
    }
        bool succession_flag = WriteFile(handle_to_pipe, buffer, buf_size, &written_bytes, NULL);
    if(!succession_flag)
    {
                ShowMessage("Неудалось отправить сообщение");
        }
        CloseHandle(handle_to_pipe);

Автор: Олег2005 1.5.2012, 22:37
Не думаете ли вы, что тема эта не сетевое программирование?
Это скорее WINAPI.
Перенести?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)