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

Вниз

Траблы с NamedPipes   Найти похожие ветки 

 
NetDigger ©   (2004-11-29 14:01) [0]

Здравствуйте, уважаемые! Помогите разобраться с Named Pipes. Сделал простенькую программу - сервер и клиент. Сервер - окно с кнопарем CreateServer и клиент - с двумя Едитами и кнопарями Send и Receive. Запускаю сервер, нажимаю Create, запускаю клиент, набирают в одном Edit"е текст, жму на Send, затем на Receive - виснет клиент. Стоит закрыть сервер, вылетает ошибка(на клиенте), что типа не могу прочесть из канала ( ReadFile возвращает False) - чего только не перепробовал - не получается. Исходники:
Сервер


HP := CreateNamedPipe( "\\.\PIPE\test", PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE or PIPE_READMODE_BYTE or
                         PIPE_NOWAIT, 255, 1000*SizeOf(AnsiChar), 1000*SizeOf(AnsiChar), 0, nil );
  If HP = INVALID_HANDLE_VALUE then Begin
     ShowMessage("Cannot create pipe!");
     Halt;
  End;

Клиент

Var
HPipe: Thandle;

procedure TForm1.Button1Click(Sender: TObject);
var
 res: Boolean;
 BytesWrt: DWORD;
 BytesRd: DWORD;
 
 len : DWORD;
begin
 HPipe := CreateFile( "\\.\Pipe\test", GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE,
                      nil, OPEN_EXISTING, 0, 0 );
 If HPipe = INVALID_HANDLE_VALUE then begin
    ShowMessage("Cannot create file!");
    halt;
 End;

 Messag := PAnsiChar(Edit1.Text + #0);
 Len := Length( Messag) * SizeOf(AnsiChar) + 1;

 res := WriteFile( Hpipe, Messag^, Len, BytesWrt, nil );
 If not(res) then Begin
   ShowMessage("Cannot write to pipe!");
   halt;
 End;

end;

procedure TForm1.Button2Click(Sender: TObject);
var
 res: Boolean;
 BytesRd: DWORD;
 InBuf: Array[0..512] of AnsiChar;
Begin

InBuf[0] := #0;
 Res := ReadFile( hPipe, InBuf, 512, BytesRd, nil );
 If not(res) then Begin
   ShowMessage("Cannot read from pipe!");
   halt;
 End
 Else
   ShowMessage( StrPas( InBuf ) );

 closeHandle( HPipe );

end;


 
Digitman ©   (2004-11-29 15:39) [1]


> кнопарем


дурацкий доморощенный жаргон придает уверенности ?


> Сервер


ну и где же у тебя вызов ф-ции ConnectNamedPipe() ?


 
NetDigger ©   (2004-11-29 15:52) [2]

Хех, ну может с жаргоном и переборщил...
Пробовал и так - результат аналогичен


 
Digitman ©   (2004-11-30 08:11) [3]


> NetDigger ©   (29.11.04 15:52) [2]


загляни в "Статьи", там есть пример использования пайпов



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

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

Наверх




Память: 0.47 MB
Время: 0.053 c
1-1104606072
Arnold
2005-01-01 22:01
2005.01.16
Почему необрабатывается VK_LEFT, RIGHT, UP,DOWN


1-1104230829
BFG9k
2004-12-28 13:47
2005.01.16
Отрисовка одной ячейки в StringGrid


6-1096257449
Sasha aka Slon
2004-09-27 07:57
2005.01.16
IP компов в сети


4-1101400188
Ego
2004-11-25 19:29
2005.01.16
Комментарий к файлу


14-1104341373
Panom
2004-12-29 20:29
2005.01.16
можно ли создать?