Содержание материала

Code:

procedure TPipeThread.Execute;

var

hPipe: THandle; //Указатель на наш канал

bytesRead: DWORD;  //Количество прочитанных байт

begin

try

  hPipe := CreateNamedPipe('\\.\PIPE\OurPipe', //Наше имя

     PIPE_ACCESS_INBOUND, // сервер может только читать канал

     PIPE_WAIT or               // Синхронная работа

     PIPE_READMODE_MESSAGE or   // метод чтения - пакеты

     PIPE_TYPE_MESSAGE,

     PIPE_UNLIMITED_INSTANCES,        // Бесконечно много клиентов

     SizeOf(Tpipedata), //размер буфера чтения

     SizeOf(Tpipedata), // размер буфера записи

                       100,                  // Тайм-аут

     nil);                      // Артребуты безопасности.

   if hPipe = INVALID_HANDLE_VALUE then Exit; //Если не удалось создать канал, то выходим

 

   while true do //Теперь читаем, пока не надоест!

   begin

     try

       ConnectNamedPipe(hPipe, nil); //Подключаемся к каналу, второй параметр

                                     //нужен только, если вместо PIPE_WAIT вы указали PIPE_NOWAIT

 

       //Теперь читаем, параметры – указатель на канал, наш буфер,

       //кол-во прочитанных байт, и последнее опять таки только для PIPE_NOWAIT.

       if ReadFile(hPipe, PipeData, SizeOf(TpipeData), bytesRead, nil) then

       begin

       Synchronize(ShowData); //Синхронизируемся с главным потоком

       end;

     finally

       DisconnectNamedPipe(hPipe); //Закрываем канал, параметры – только указатель

     end;

    end;

finally

end;

end;

 
Ну вот, это большая часть нашего сервера. Функцию ShowData можно сделать такую:
 

Code:

procedure TPipeThread.ShowData;

begin

Case PipeData.pEvent of

1:form1.Memo1.Lines.Add('======Событие 1======');

2:form1.Memo1.Lines.Add('=========Событие 2==========');

end;

form1.Memo1.Lines.Add('Программа '+PipeData.Clientname+' открыла канал');

form1.Memo1.Lines.Add(DateTostr(PipeData.Date));

form1.Memo1.Lines.Add('');

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить