-
Здравствуйте, Уважаемые Знатоки! Я создаю канал в одной программе: pPipeHandle := CreateNamedPipe(pchar(pServerPipeName), PIPE_ACCESS_DUPLEX , PIPE_WAIT or PIPE_READMODE_BYTE or PIPE_TYPE_BYTE, PIPE_UNLIMITED_INSTANCES, Sizeof(TPipeData), Sizeof(TPipeData), 100, nil); if pPipeHandle = INVALID_HANDLE_VALUE then ExitThread(0);
ConnectNamedPipe(pPipeHandle, nil);
while not Terminated do if not fWriting then if ReadFile(pPipeHandle, pData, sizeof(TPipeData), br, nil) then Synchronize(RefreshData); DisconnectNamedPipe(pPipeHandle); CloseHandle(pPipeHandle);
А в другой программе, подключаюсь к нему: pPipeHandle := CreateFile(pchar(pServerPipeName), GENERIC_WRITE or GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if pPipeHandle = INVALID_HANDLE_VALUE then ExitThread(0);
br := PIPE_WAIT or PIPE_READMODE_BYTE;
if SetNamedPipeHandleState(pPipeHandle, br, nil, nil) then while not Terminated do if not fWriting then if ReadFile(pPipeHandle, pData, sizeof(TPipeData), br, nil) then Synchronize(RefreshData); // DisconnectNamedPipe(pPipeHandle); CloseHandle(pPipeHandle);
Т.о. я хочу создать канал на сервере, и подключится к нему клиентской программой, все отлично подключаемся. Но вот как только я, нажав на кнопку, делаю WriteFile(pPipeHandle, aData, sizeof(TPipeData), wr, nil); программа зависает, почему это происходит что я не так делаю...
-
Кстати, если я ставлю у канала не PIPE_ACCESS_DUPLEX, а PIPE_ACCESS_INBOUND/PIPE_ACCESS_OUTBOUNT, а подключаюсь к нему как GENERIC_WRITE/GENERIC_READ, то все работет..., но только в одну сторону...
-
-
Каким образом лучше всего реализовать систему клиент-сервер, которая лолжна принимать и передавать сообщения и файлы как со стороны клиента, так и со стороны сервера, меня интересует реализация сетевого взаимодействия, подойдут ли для этого Named Pipes?
-
Rouse_ За пример спасибо!
-
> как только я, нажав на кнопку, делаю WriteFile
В основном потоке делаешь ? В то время как пайп создан в дополнительном, да еше и в это время там же, в доп.потоке, выполняется синхр.чтение ?
> программа зависает
Ну а что ты хотел ? ССЗБ)
|