Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Named Pipes


Страницы:   1 2

Polevi ©   (2006-09-11 17:09:00) 

нужно получать инфу от сервиса, создаю однонаправленный пайп

 hPipe:=CreateNamedPipe('\\.\PIPE\Test',PIPE_ACCESS_OUTBOUND,PIPE_TYPE_BYTE,1,buf Size,bufSize,INFINITE,nil);
 if hPipe<>INVALID_HANDLE_VALUE then
 while true do
 begin
   ConnectNamedPipe(hPipe,nil);
   if Terminated then break;
   WriteFile(hPipe,
   FlushFileBuffers(hPipe);
   DisconnectNamedPipe(hPipe);
 end;

в качестве клиента использую type
type \\.\Pipe\Test отлично отображает возвращаемые данные
но при попытке указать имя сервера
type \\localhost\Pipe\Test получаю "неверная функция"

что не так ?


Игорь Шевченко   (2006-09-14 16:25:00) [1]

Polevi ©   (14.09.06 13:36) [33]


> type \\.\Pipe\Test работает


Это ж не UNC, это локальное имя.

han_malign ©   (14.09.06 14:08) [35]


> - умеет - "простые файлы" заглатывает...
> type \\127.0.0.1\shared\test.txt


Это если он shared, не так ли ? Я не в курсе, с какими опциями команда type выдает CreateFile.


Rouse_   (2006-09-14 14:29:00) [2]


> может все-таки \\?\UNC\localhost\pipe\test\ ?

Ты не путай символьную ссылку с путем...


han_malign   (2006-09-14 14:11:00) [3]


> на второй: \??\UNC\localhost\pipe\test\

- может все-таки \ \?\UNC\localhost\pipe\test\ ?


han_malign   (2006-09-14 14:08:00) [4]


> Я извиняюсь, а type умеет с UNC-именами работать ? (Я не в курсе просто)

- умеет - "простые файлы" заглатывает...
type \\127.0.0.1\shared\test.txt
- с удаленных и по имени компьютера тоже берет.
а вот localhost - не берет - говорит "You were not connected because a duplicate name exists on the network. Go to System in Control Panel to change the computer name and try again."
XP SP2
но тут еще вопрос в доменных политиках, в наличии DNS, и т.д. и т.п. .


Rouse_   (2006-09-14 13:44:00) [5]

Пустые строки? Хм... нтересно...
у меня на первый выдает: \??\pipe\test\
на второй: \??\UNC\localhost\pipe\test\


Polevi   (2006-09-14 13:36:00) [6]

>Rouse_ ©   (13.09.06 14:22) [31]
твой код пустые строки возвращает

>Игорь Шевченко ©   (13.09.06 17:50) [32]
type \\.\Pipe\Test работает


Игорь Шевченко   (2006-09-13 17:50:00) [7]

Я извиняюсь, а type умеет с UNC-именами работать ? (Я не в курсе просто)


Rouse_   (2006-09-13 14:22:00) [8]

В смысле через свое CreateFile с указанием имен которые выдаст мой код...


Rouse_   (2006-09-13 14:21:00) [9]

Попробуй ка выполнить соединение на вот эти два имени:

type
 PUnicodeString = ^TUnicodeString;
 TUnicodeString = packed record
   Length,
   MaxLength: WORD;
   Buffer: PWideChar;
 end;

 function RtlDosPathNameToNtPathName_U(DosName: PWideChar;
   var NtName: TUnicodeString; DosFilePath: PPWideChar;
   var NtFilePath: TUnicodeString): BOOL; stdcall; external 'ntdll.dll';

implementation

procedure TForm18.FormCreate(Sender: TObject);
var
 Test1, Test2: PWideChar;
 NtName, NtFilePath: TUnicodeString;
begin
 Test1 := '\\.\pipe\test\';
 Test2 := '\\localhost\pipe\test\';
 RtlDosPathNameToNtPathName_U(Test1, NtName, nil, NtFilePath);
 ShowMessage(NtName.Buffer);
 RtlDosPathNameToNtPathName_U(Test2, NtName, nil, NtFilePath);
 ShowMessage(NtName.Buffer);
end;


Polevi   (2006-09-13 13:02:00) [10]

>Сергей М. ©   (13.09.06 11:09) [28]
угу, чтобы понять надо отладчиком смотреть их потроха
чтото не видно Игоря Шевченко, может он чего скажет по этому вопросу


Сергей М.   (2006-09-13 11:09:00) [11]


> Polevi ©   (13.09.06 11:07) [27]


Кстати, с copy и xcopy - та же история


Polevi   (2006-09-13 11:07:00) [12]

я рад за тебя
мой пример тоже "отлично работает с удаленными серверами"
что ты можешь сказать по сабжу, а именно использование type для чтения из пайпа


Alex Konshin   (2006-09-13 02:06:00) [13]

У меня на сайте есть пример по named pipes, смотри в MS SQL Alerter http://home.earthlink.net/~akonshin/files/SQLAlert.zip
Насколько я помню, он отлично работал с удаленными серверами.


Polevi   (2006-09-12 11:54:00) [14]

понятно
вообщем я понял не судьба, напишу своего клиента
спасибо за внимание


Сергей М.   (2006-09-12 11:30:00) [15]


> Polevi ©   (12.09.06 11:13) [23]


У меня:

'Access denied' в ответ на type \\CompName\Pipe\Test

'A duplicate name exists on the network' в ответ на type \\localhost\Pipe\Test


Polevi   (2006-09-12 11:13:00) [16]

Неверная функция
неплохо бы отладчиком ковырнуть, да нет его у меня


Сергей М.   (2006-09-12 10:54:00) [17]


> не работает, в том то и беда


что говорит ?


Polevi   (2006-09-12 10:51:00) [18]

>type \\CompName\Pipe\Test
не работает, в том то и беда
я расчитывал таким образом получать статистику с сервиса из любой машины в сети
написать своего клиента 2 минуты делов, но охота понять в чем проблема


Сергей М.   (2006-09-12 10:45:00) [19]


> Polevi ©   (12.09.06 10:17) [18]


А если так

type \\CompName\Pipe\Test

?


> насчет CloseHandle ..неожидал я такой подставы


Начиная с Vista и Longhorn эта засада ликвидирована


Polevi   (2006-09-12 10:18:00) [20]

кстати насчет CloseHandle ты был прав, неожидал я такой подставы


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо