Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1104044743
ReNEG@T 344
2004-12-26 10:05
2005.01.16
Delphi 8


3-1103006883
OlegL
2004-12-14 09:48
2005.01.16
TMemoField


14-1103726378
NeyroSpace
2004-12-22 17:39
2005.01.16
DigiNet + Ati RADEON 9200 не работает


3-1103199107
stud
2004-12-16 15:11
2005.01.16
ошибка при попытке выполнения процедуры


14-1104165291
iZEN
2004-12-27 19:34
2005.01.16
Оцените дизайн сайта, пожалуйста.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский