Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.31;
Скачать: CL | DM;

Вниз

Pipe   Найти похожие ветки 

 
sargast ©   (2008-05-11 00:53) [0]

Здравствуйте.
Написал сервер и клиент, работающие через именованные каналы. Все работает, сообщения от клиента к серверу доходят. Теперь нужно сделать так, чтобы при получении сообщения сервер отсылал ответ клиенту, типо сообщение дошло. Как это можно сделать?

Сервер

VAR
 PipeHandle:THANDLE;
 BytesRead:DWORD;
 buffer:Array [1..80]of char;
begin
  PipeHandle:= CreateNamedPipe("\\.\Pipe\Jim", PIPE_ACCESS_DUPLEX,
               PIPE_TYPE_BYTE or PIPE_READMODE_BYTE, 1,0, 0, 1000, Nil);
if PipeHandle= INVALID_HANDLE_VALUE then
begin
 ShowMessageFmt("Ошибка %d при создании именованного канала",
  [GetLastError]);
 exit;
end;
ShowMessage("Сервер работает");
if ConnectNamedPipe(PipeHandle, Nil) = False then
begin
   ShowMessageFmt("Ошибка %d при соединении по именованному каналу",
  [GetLastError]);
     CloseHandle(PipeHandle);
   exit;
end;
if ReadFile(PipeHandle, buffer, sizeof(buffer),BytesRead, nil)=False then
begin
  ShowMessageFmt("Ошибка %d при чтении данных", [GetLastError]);
     CloseHandle(PipeHandle);
  exit;
end;
ShowMessage(buffer);
if DisconnectNamedPipe(PipeHandle) = False then
begin
  ShowMessageFmt("Ошибка %d при закрытии канала", [GetLastError]);
  exit;
end;
CloseHandle(PipeHandle);
end;


Клиент
CONST
  PIPE_NAME= "\\.\Pipe\Jim";
VAR
  PipeHandle:THANDLE;
  BytesWritten:DWORD;
begin
   if WaitNamedPipe(PIPE_NAME, NMPWAIT_WAIT_FOREVER) = False then
   begin
     ShowMessageFmt("Функция WaitNamedPipe завершена с ошибкой %d",[GetLastError]);
     exit;
   end;
   // Открытие экземпляра именованного канала
   PipeHandle:=CreateFile(PIPE_NAME,GENERIC_READ or GENERIC_WRITE, 0,
   Nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
   if PipeHandle= INVALID_HANDLE_VALUE then
   begin
     ShowMessageFmt("Функция CreateFile завершена с ошибкой %d", [GetLastError]);
     exit;
   end;
   if WriteFile(PipeHandle,"This is a test",14, BytesWritten,Nil) = False then
   begin
     ShowMessageFmt("WriteFile failed with error %d", [GetLastError]);
     CloseHandle(PipeHandle);
     exit;
   end;
   ShowMessageFmt("Передано %d байт", [BytesWritten]);
   CloseHandle(PipeHandle);
end;


 
Cj ©   (2008-05-11 12:52) [1]

Читай статью Игоря Шевченко про. здесь
http://www.delphimaster.ru/articles/named_pipes/index.html


 
Сергей М. ©   (2008-05-11 21:01) [2]


> Как это можно сделать?


Точно так же как это делает клиент - WriteFile



Страницы: 1 вся ветка

Текущий архив: 2009.05.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1237214993
Alex354
2009-03-16 17:49
2009.05.31
Печатать изображение без учёта границ непечатаемых полей


2-1239864830
timekiller
2009-04-16 10:53
2009.05.31
Загрузка странички с html якорями


15-1238018281
Юрий
2009-03-26 00:58
2009.05.31
С днем рождения ! 26 марта 2009 четверг


2-1240165745
daxter
2009-04-19 22:29
2009.05.31
Помогите с indy 9


8-1194437854
zvukoff
2007-11-07 15:17
2009.05.31
как снять звук с микрофона и тут же его выводить на колонки