Форум: "WinAPI";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизТраблы с 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c