Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Именнованные каналы


Автор: nogoody 5.11.2007, 21:39
Проблема в следующем
Есть сервер именнованных каналов

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
//Создание события на сервере
   Evntserver:= CreateEvent(Nil, FALSE, FALSE, Nil);
   if EvntServer=0 then
   begin
      ShowMessageFmt('Ошибка %d при создании объекта событие',
        [GetLastError]);
      CloseHandle(PipeHandle);
      exit;
   end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Создание именованного канала
   PipeHandle:= CreateNamedPipe('\\.\Pipe\Jim', PIPE_ACCESS_DUPLEX or FILE_FLAG_OVERLAPPED,
                PIPE_TYPE_BYTE or PIPE_READMODE_BYTE or PIPE_NOWAIT, 3,0, 0, 1000, Nil);
    if PipeHandle= INVALID_HANDLE_VALUE then
    begin
        ShowMessageFmt('Ошибка %d при создании именованного канала',
            [GetLastError]);
        exit;
    end;
    ShowMessage('Сервер работает.Создайте клиента');
end;


так же описан клиент:

Код

procedure TForm1.Button2Click(Sender: TObject);
begin
  strcat(@pipe_Name,'\\.\Pipe\Jim');
  if WaitNamedPipe(@PIPE_NAME, NMPWAIT_WAIT_FOREVER) = False then
    begin
      ShowMessageFmt('Функция WaitNamedPipe завершена с ошибкой %d',[GetLastError]);
      exit;
    end;
      // Открытие экземпляра именованного канала
    PipeClient:=CreateFile(@PIPE_NAME,GENERIC_READ or GENERIC_WRITE, 0,

          Nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0);
     if PipeClient= INVALID_HANDLE_VALUE then
    begin
      ShowMessageFmt('Функция CreateFile завершена с ошибкой %d', [GetLastError]);
    end
    else ShowMessage('Клиент работает');
end;


Проблема в следующем, при запуске второго клиента, клиент зависает... как сделать, чтоб подключилось несколько клиентов...?

Автор: MetalFan 5.11.2007, 22:33
а для чего создавался event?

Автор: nogoody 5.11.2007, 23:50
  evntserver: THANDLE; - Объект событие для организации работы функции ReadFile и WriteFile в неблокирующем режиме, далее будет реалезовано...

Автор: MetalFan 6.11.2007, 09:57
а почему размеры буферов по нулям?

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