Главная страница
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.034 c
3-1102683731
pavel_guzhanov
2004-12-10 16:02
2005.01.16
Именованные каналы в MS SQL Server


1-1104238546
JK
2004-12-28 15:55
2005.01.16
StringGrid


3-1102739027
cruse
2004-12-11 07:23
2005.01.16
ГДЕ ошибка при компиляции скрипта


14-1103831476
DillerXX
2004-12-23 22:51
2005.01.16
помогите кто знает геометрию


14-1104389406
SLP
2004-12-30 09:50
2005.01.16
Аббревиатура в конференциях