named pipes
7 отговора
338 прегледа
named pipes
imam edno prilojenie koeto chrez named pipes se vurzva kum druga svoja instancia i se pingvat dvete (connect,send message, disconnect).
ako pusna dve instancii na moja komp (1) - vsichko vurvi. ako obache sloja instancia na komp (2): 1 otgovarja na pingovete, no ne moje ot svoja strana da pingva 2 (createfile(pipe_2) vrushta error_access_denied). zabavnoto stava kogato na komp (3) sushto sloja instancia, togava puk 2 i 3 si se pingvat bez problemi.
nekoi da znae kakuv moje da e problema na 1 ?
thanx
ako pusna dve instancii na moja komp (1) - vsichko vurvi. ako obache sloja instancia na komp (2): 1 otgovarja na pingovete, no ne moje ot svoja strana da pingva 2 (createfile(pipe_2) vrushta error_access_denied). zabavnoto stava kogato na komp (3) sushto sloja instancia, togava puk 2 i 3 si se pingvat bez problemi.
nekoi da znae kakuv moje da e problema na 1 ?
thanx
Re: named pipes
mi dvata pipa( na 1 i na 2) se syzdavat po identichen nachin s default security (random access)
3 nema nekakvi specialni permissioni za 2 i dvata si komunikirat fine. a 1 zashto ne moje da pishe na 2 ?
napravih logina na usera puskasht 1 administrator na 2 i pak ne stava nishto
3 nema nekakvi specialni permissioni za 2 i dvata si komunikirat fine. a 1 zashto ne moje da pishe na 2 ?
napravih logina na usera puskasht 1 administrator na 2 i pak ne stava nishto
Re: named pipes
Pipe-a ima klientska chast i serverska chast. Trjabva da si otgovorish na vyprosa kyde kakyv pipe ima.
Ot objasnenijata ti bih predpolojil, che 2 i 3 se pingvat prosto poradi sluchainost:
pusnal si 2, 2 se e opital da syzdade serverski pipe za shared ot 1 resurs, fail-nal e, pusnal si 3, resursa na 3 ne e share-nat ot 1, 2 namira serverskija pipe na 3, i syotvetno 2 i 3 pochvat da si gukat bezproblemno. S dve dumi, problemyt mi zvuchi kato da e konceptualen, ne implementacionen.
Da, tova e wild shot - s informacijata, kojato si dal prosto ne mi e jasna postanovkata.
Interesnite momenti sa njakolko - kak se tyrsjat edin drug 1,2 i 3, koi vzema reshenieto da iniciira ping-a, kakyv e locking mehanizma za resursite, vyrhu koito stypvat pipe-ovete ti (primerno ako edinija otvori file v lokalnata ti mreja s deny-share-to-everyone-else i go expose-ne, a posle i drugija probva da go otvori - jasno e kvo shte stane).
Bi bilo po-lesno ako "shed some light here" :-)
Ot objasnenijata ti bih predpolojil, che 2 i 3 se pingvat prosto poradi sluchainost:
pusnal si 2, 2 se e opital da syzdade serverski pipe za shared ot 1 resurs, fail-nal e, pusnal si 3, resursa na 3 ne e share-nat ot 1, 2 namira serverskija pipe na 3, i syotvetno 2 i 3 pochvat da si gukat bezproblemno. S dve dumi, problemyt mi zvuchi kato da e konceptualen, ne implementacionen.
Da, tova e wild shot - s informacijata, kojato si dal prosto ne mi e jasna postanovkata.
Interesnite momenti sa njakolko - kak se tyrsjat edin drug 1,2 i 3, koi vzema reshenieto da iniciira ping-a, kakyv e locking mehanizma za resursite, vyrhu koito stypvat pipe-ovete ti (primerno ako edinija otvori file v lokalnata ti mreja s deny-share-to-everyone-else i go expose-ne, a posle i drugija probva da go otvori - jasno e kvo shte stane).
Bi bilo po-lesno ako "shed some light here" :-)
Re: named pipes
mai objasneniata mi naistina sa bili typi shtom nikoi dosega ne e razbral nishto.
predstavi si app - ima edin tred za "pingavne" na izvesten predvaritelno pipe (primerno "\\serv2\pipe\p2) i drug thread koito si suzdava pipe na koito she slusha s connectnamedpipe() (\\.\pipe\pipe1)
e drugia server(serv2) si syzdava \\.\pipe\p2 i tursi \\serv1\pipe\p1 s createfile()
taka po-jasno li stana ?
:)
btw kak e v ms ? :))
predstavi si app - ima edin tred za "pingavne" na izvesten predvaritelno pipe (primerno "\\serv2\pipe\p2) i drug thread koito si suzdava pipe na koito she slusha s connectnamedpipe() (\\.\pipe\pipe1)
e drugia server(serv2) si syzdava \\.\pipe\p2 i tursi \\serv1\pipe\p1 s createfile()
taka po-jasno li stana ?
:)
btw kak e v ms ? :))
Re: named pipes
:)
mi znachi kogato chovek vika CreateNamedPipe() e normalno da se izkushi i da zadade NULL kato posleden parametyr kato SECURITY_ATTRIBUTES, koeto dava default security. samo che se okazva che default secirity ne znachi free-for-all security i tova mi beshe problema. kakto i da e sled golemi bitki i tursene v msdn i internet stignah do q102798 article ot msdn specialno za security matters za pipes. smeshnoto e che namerih edinstveno japonskata versia na tozi article, za shtastie obache koda tam e na latinica :))
za da vi spestja roveneto eto koda koito zadava free-for-all security:
InitializeSecurityDescriptor(&pSD,
SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&pSD, TRUE, (PACL) NULL, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &pSD;
sa.bInheritHandle = TRUE;
i razbira se CreateNamedPipe trebva da se vikne s posleden parametyr "sa"
tova e
best regards
SLOP SLOP SLOP
mi znachi kogato chovek vika CreateNamedPipe() e normalno da se izkushi i da zadade NULL kato posleden parametyr kato SECURITY_ATTRIBUTES, koeto dava default security. samo che se okazva che default secirity ne znachi free-for-all security i tova mi beshe problema. kakto i da e sled golemi bitki i tursene v msdn i internet stignah do q102798 article ot msdn specialno za security matters za pipes. smeshnoto e che namerih edinstveno japonskata versia na tozi article, za shtastie obache koda tam e na latinica :))
za da vi spestja roveneto eto koda koito zadava free-for-all security:
InitializeSecurityDescriptor(&pSD,
SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&pSD, TRUE, (PACL) NULL, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &pSD;
sa.bInheritHandle = TRUE;
i razbira se CreateNamedPipe trebva da se vikne s posleden parametyr "sa"
tova e
best regards
SLOP SLOP SLOP