HELP2: Еще один вопрос по pipe
От: Baggy  
Дата: 26.11.02 07:31
Оценка:
Вообщем есть следующий механизм:
Нужно осуществить связь процесса Сервера, который читает сообщения, и процессов клиентов которые это сообщения туда пишут...:
Так вот алгоритм мой таков:
1. В процессе сервере создается Именнованный пайп и начаниет циклиться читая сообщения:
hMainPipe = CreateNamedPipe(MainPipeName,PIPE_ACCESS_INBOUND,
        PIPE_TYPE_MESSAGE,PIPE_UNLIMITED_INSTANCES,
        0,0,NMPWAIT_USE_DEFAULT_WAIT,0);


    while (TRUE)
    {
        fSuccess=ReadFile(hMainPipe,temp_name,22*sizeof(char),&temp_int,0);
        if (fSuccess && (temp_int==22*sizeof(char)))
        {
            // Îáðàáîòêà ïîñòóïèâøåãî ñîîáùåíèÿ...
            if (FLAG_EXIT) break;
        }
    }

... Соответственно Пайп создается почти нормально (см.предыдущее моё сообщение в этом форуме)...
2. В Процессе Клиенте происходит следующее:
HANDLE hPipe1 = CallNamedPipe(MainPipeName,temp_pipepath,22*sizeof(char),0,0,&temp_int,NMPWAIT_WAIT_FOREVER))
CloseHandle(hPipe1);
DWORD result = GetLastError();

А в результате:
при запуске одного экземпляра такого процесса все проходит нормально....сообщение проходит...
Однако при запуске второго и последующих экземпляров: hPipe1 = 0xffffffff;
а GetLastError выдает ошибку: 0xe7: т.е. Все копии канала заняты....

Если кто-нить понял в чём моя ошибка... подскажите плиз...

p.s. ( Если вместо CallNamedPipe использовать CreateFile и WriteFile то получается тот же результат...)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.