Главная страница
    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.45 MB
Время: 0.029 c
4-1100444311
Doc-N
2004-11-14 17:58
2005.01.16
Изменение таблици импорта


6-1098892937
Mirror
2004-10-27 20:02
2005.01.16
Имя подключения


1-1103913884
Muhan
2004-12-24 21:44
2005.01.16
Как задать паузу?


3-1103121638
Aser
2004-12-15 17:40
2005.01.16
Подскажите, как мне выполнить множество SQL-запросов?


1-1104128308
Pavelkq
2004-12-27 09:18
2005.01.16
TFileStream.Create или еще чего?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский