Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Servicii de comunicatie prin mesaje in retele Novell
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

Serviciile de comunicaþie prin mesaje permit programelor de aplicaþie:

a) sa emita mesaje de pana la 55 de octeþi in vederea difuzarii lor la mai multe destinaþii b) sa stabileasca unul sau mai multe canale de mesaje cu o anumita staþie de lucru legata la acelaºi file server. Un astfel de canal ofera posibilitatea transmiterii de mesaje de pana la 126 de octeþi.

Difuzarea de mesaje ºi comunicaþia prin canale consuma timp calculator la server. Pentru a avea o adevarata comunicaþie de la egal la egal intre staþiile de lucru, programele de aplicaþii pot sa foloseasca funcþiile IPX sau SPX sau NetBIOS. Aceste funcþii nu folosesc timp UC server ºi deci ofera performanþe mai bune ºi o flexibilitate crescuta. Pentru serviciul de difuzare a mesajelor, fiecare conexiune a unui file server are asociata un buffer de 55 de octeþi pentru serviciul de comunicaþie prin canale, serverul menþinand pentru fiecare conexiune o coada de mesaje (capacitatea maxima a cozii este de 6 mesaje). In mod normal, odata cu conexiunea se trimite un mesaj spre difuzare catre o alta conexiune, acesta este depus in bufferul de mesaje difuzate sau in coada de mesaje primite ale conexiunii destinatare de unde este preluat de supervizor (shell) ºi afiºat pe linia cea mai de jos, a 25-a linie a ecranului. g2b16bb
Fiecare conexiune are un mod de tratare a mesajelor (un nr numai intre 0 ºi 3, care poate fi modificat prin program), care precizeaza daca bufferul destinat mesajelor difuzate este deschis sau nu ºi daca supervizorul are sau nu voie sa preia automat mesajele difuzate.
Funcþiile de comunicare prin mesaje sunt folosite de programele utilitare SEND, CASTON ºi CASTOFF, care se folosesc pentru a emite mesaje in vederea difuzarii, sa permita sau sa interzica recepþionarea mesajelor difuzate. Mesajele transmise cu ajutorul acestor funcþii pot fi inregistrate intr-un fiºier jurnal special, accesibil administratorului reþelei.




Fiºiere antet necesare:

#include <nit.h>
#include <niterror.h>

BroadcastToConsole

Trimite un mesaj care va fi afiºat la consola serverului implicit. Mesajele afiºate la consola ºterg mesajele precedente.

Parametri:

char *message ºir de caractere conþinand mesajul de trimis. Lungimea maxima este de 60 de caractere inclusiv NULul terminator. Sunt permise numai caracterele imprimabile din setul ASCII.

Rezultat:

int SUCCESSFULL
MESSAGE_QUEUE_FULL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

CheckPipeStatus

Determina starea uneia sau a mai multor canale de mesaje.

Parametri:

WORD *connectionList tablou conþinand numerele de conexiune ale staþiilor la care este legat fiecare dintre canalele asupra carora sa face interogarea.
BYTE *resultList fiecare element din acest tablou va primi ca valoare un cod indicand starea canalului identificat de elementul corespunzator din connectionList. Sunt definite urmatoarele valori :
0x00 -- canal in stare de funcþionare
0xFE -- cealalta conexiune nu a deschis canalul corespunzator
0xFF -- canalul nu a fost deschis sau numarul conexiunii este eronat.
WORD connectionCount numarul de canale (elemente in tablourile precedente).

Rezultat:

int SUCCESSFUL

CloseMessagePipe

Inchide unul sau mai multe canale de mesaje.

Parametri:

WORD *connectionList tablou conþinand numerele de conexiune ale staþiilor la care este legat fiecare dintre canalele care trebuie inchise
BYTE *resultList fiecare element din acest tablou va primi ca valoare un cod indicand starea canalului identificat de elementul corespunzator din connectionList. Sunt definite urmatoarele valori :
0x00 -- canalul a fost inchis cu succes
0xFD -- eroare, cealalta conexiune nu mai este valida
0xFF -- eroare, canalul nu era deschis.
WORD connectionCount numarul de canale (elemente in tablourile precedente).

Rezultat:

int SUCCESSFULL
MESSAGE_QUEUE_FULL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

GetBroadcastMessage

Preia un mesaj transmis prin difuzare. Apelarea acestei funcþii are sens numai daca modul de tratare a mesajelor difuzate este 2 sau 3.

Parametri:

char *messageBuffer va recepþiona mesajul (cel mult 55 de caractere, inclusiv NUL-ul terminator). Daca nici un mesaj nu este disponibil, atunci messageBuffera0i va lua valoarea '\0' (lungimea minima a unui mesaj este 1).

Rezultat:

int SUCCESSFULL
MESSAGE_QUEUE_FULL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

GetBroadcastMode

Permite aflarea modului curent de tratare a mesajelor difuzate. Un mesaj din partea serverului poate elimina din buffer un mesaj din partea unei staþii de lucru.

Rezultat:

BYTE 0 -- mesajele sunt admise atat din partea altor staþii de lucru cat ºi din partea serverului. Supervizorul staþiei preia automat ºi afiºeaza fiecare mesaj.
1 -- mesajele sunt admise numai din partea serverului. Supervizorul staþiei preia automat ºi afiseaza fiecare mesaj.
2 -- mesajele sunt admise numai din partea serverului. Este sarcina utilizatorului sa preia mesajele.
3 -- sunt admise mesaje atat din partea serverului cat ºi a altei staþii de lucru. Este sarcina utilizatorului sa preia mesajele.

GetPersonalMessage

Preia un mesaj din coada de mesaje asociata staþiei de lucru.

Parametri:

char *messageBuffer primeºte ca valoare un ºir de caractere reprezentand cel mai vechi mesaj din coada (cel mult 127 de caractere, inclusiv NUL-ul).
WORD *connectionNumber primeºte ca valoare numarul conexiunii care a emis mesajul, sau 0 daca nu exista nici un mesaj in coada.

Rezultat:

int SUCCESSFUL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

LogNetworkMessage

Depune un mesaj in fiºierul NET$LOG.MSG al serverului implicit. Intrarea in fiºier va avea urmatorul format:

luna/zi/an ore:minute STN numar_staþie: mesaj

Funcþia poate fi utilizata de utilitare sau de programe de aplicaþie care au nevoie sa inregistreze informaþii, de exemplu cu scopul de a le folosi pentru contabilitate.

Parametri:

char *message ºir de caractere imprimabile conþinand mesajul de inregistrat (cel mult 80 de caractere, inclusiv NUL-ul).

Rezultat:

int SUCCESSFUL.

OpenMessagePipe

Creaza o jumatate de canal de comunicaþie intre staþia de lucru ºi una sau mai multe conexiuni, cealalta jumatate a canalului (canalelor) trebuie creata de conexiunea (conexiunile) destinatara cu ajutorul aceleiaºi funcþii.

Parametri:

WORD *connectionList un tablou conþinand numerele conexiunilor la care trebuie conectata staþia de lucru. Pentru fiecare element din acest tablou se afla un element corespunzator in tabloul resultList.

BYTE *resultList elementele acestui tablou primesc ca valoare un cod care indica rezultatul incercarii de a deschide o conexiune intre staþii de lucru ºi conexiunea indicata de elementul corespunzator din connectionList. Valorile acestui cod pot fi :
0x00 -- succes, conexiunea destinatara crease deja jumatatea ei de canal,
0xFE -- canal incomplet, conexiunea destinatara exista, dar nu a creat inca jumatatea ei de canal,
0xFF -- eºec, conexiunea destinatara nu exista.
WORD connectionCount numarul de intrari in connectionList.

Rezultat:

int SUCCESSFUL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

SendBroadcastMessage

Trimite un mesaj spre difuzare la un numar de conexiuni de pe acelaºi server.

Parametri:

char *message mesaj de difuzat (cel mult 56 de caractere, inclusiv NUL).
WORD *connectionList tablou conþinand numerele conexiunilor catre care trebuie difuzat mesajul.
BYTE *resultList tablou ale carui elemente primesc ca valoare un cod indicand modul in care s-a desfaºurat difuzarea mesajului catre conexiunea corespunzatoare din connectionList. Valorile acestui cod pot fi :
0x00 -- succes, mesajul a fost depus in bufferul de mesaje difuzate al conexiunii destinatare
0xFC -- eºec, bufferul de mesaje difuzate al conexiunii destinatare este deja plin
0xFD -- numarul conexiunii destinatare este eronat
0xFF -- eºec, conexiunea destinatara nu exista sau modul ei de tratare a mesajelor difuzate nu permite acceptarea mesajului.
WORD connectionCount numarul de intrari in connectionList.

Rezultat:

int SUCCESSFUL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

SendPersonalMessage

Trimite un mesaj catre una sau mai multe conexiuni cu care staþia de lucru a deschis canale de mesaje.

Parametri:

char *message mesaj de trimis (cel mult 127 de caractere, inclusiv NUL).
WORD *connectionList tablou conþinand numerele conexiunilor catre care trebuie trimis mesajul.
BYTE *resultList tablou ale carui elemente primesc ca valoare un cod indicand modul in care s-a desfaºurat trimiterea mesajului catre conexiunea corespunzatoare din connectionList. Valorile acestui cod pot fi :
0x00 -- success, mesajul a fost depus in bufferul de mesaje difuzate al conexiunii destinatare
0xFC -- eºec, coada de mesaje a conexiunii destinatare este deja plina
0xFE -- conexiunea destinatara nu a deschis acest canal
0xFF -- eºec, conexiunea destinatara nu exista sau staþia de lucru nu a deschis un canal de comunicaþie spre aceasta conexiune.
WORD connectionCount numarul de intrari in connectionList.

Rezultat:

int SUCCESSFUL
IO_FAILURE (lipsa spaþiu dinamic de lucru).

SetBroadcastMode

Stabileste modul in care sunt tratate mesajele difuzate destinate acestei staþii de lucru.

Parametri:

BYTE broadcastMode o valoare intre 0 ºi 3 specificand modul de tratare a mesajelor difuzate. Modul implicit este zero. Pentru semnificaþia valorilor vezi funcþia GetBroadcastMode.

Servicii de sincronizare in reþele Novell

Serviciile de sincronizare ofera programelor de aplicaþie posibilitatea coordonarii accesului la fiºierele din reþea ºi la alte resurse.

Semafoare

Sistemul Netware pune la dispozitia utilizatorilor posibilitatea de a defini ºi folosi semafoare. Acestea pot fi folosite pentru a implementa cele mai diferite protocoale de sincronizare. Fiecarui semafor ii sunt asociate doua contoare : un contor de procese care au 'deschis' semaforul (care au acces la semafor), ºi un contor care este decrementat la fiecare apel WaitOnSemaphore ºi incrementat la SignalSemaphore (contorul tipic pentru semafoare).

Etapele lucrului cu un semafor:

1) deschiderea semaforului (Open)

2) exploatarea semaforului (Wait ºi Signal)
3) inchiderea semaforului (Close).

int OpenSemaphore(char *semaphoreName, int initialValue, long *semaphoreHandle,
WORD *openCount) semaphoreName - numele semaforului (max. 128 de caractere, inclusiv NUL) initialValue - valoarea iniþiala a semaforului. Acest parametru nu se ia in considerare decat daca semaforul nu exista ºi este creat. Sunt permise valori intre 0 ºi 127.
*semaphoreHandle primeºte ca valoare un descriptor de semafor, care va fi utilizat in celelalte funcþii
*openCount primeºte numarul de procese care au 'deschis' acest semafor.

Rezultat:
0x00 SUCCESSFUL
0xFE INVALID_SEMAPHORE_NAME_LENGTH
0xFF INVALID_SEMAPHORE_INITIAL_VALUE

int ExamineSemaphore(long semaphoreHandle, int *semaphoreValue,
WORD *openCount)

Examineaza un semafor deschis. Depune in semaphoreValue, respectiv openCount, valoarea contorului de semafor, respectiv numarul de procese care au deschis semaforul.

Rezultat: 0x00 SUCCESSFUL
0xFF INVALID_SEMAPHORE_HANDLE

int WaitOnSemaphore(long semaphoreHandle, WORD timeoutLimit)

Incearca sa decrementeze contorul asociat unui semafor. Daca dupa decrementare acesta este mai mare sau egal cu zero, atunci procesul care a apelat Wait continua. In caz contrar, procesul este depus intr-o coada de aºteptare asociata semaforului. Coada avanseaza la fiecare apel Signal pentru acelaºi semafor. Daca procesul petrece in coada mai mult de timeoutLimit unitaþi de 1/18 sec, atunci el este scos din coada ºi funcþia intoarce un cod de eroare.

Rezultat:
0x00 SUCCESSFUL
0xFE TIMEOUT_FAILURE
0xFF INVALID_SEMAPHORE_HANDLE

int SignalSemaphore(long semaphoreHandle)

Incrementeaza contorul asociat semaforului. Daca in coada de aºteptare se afla vreun proces, primul proces din coada este deblocat.

Rezultat:
0x00 SUCCESSFUL
0x01 SEMAPHORE_OVERFLOW (contorul a depaºit 127)
0xFF INVALID_SEMAPHORE_HANDLE

int CloseSemaphore(long semaphoreHandle)

Inchide un semafor. Pentru ca programul sa recaºtige accesul la acel semafor, trebuie sa apeleze iaraºi OpenSemaphore. Daca acest proces era ultimul care folosea semaforul, atunci semaforul este distrus.

Rezultat:
0x00 SUCCESSFUL
0xFF INVALID_SEMAPHORE_HANDLE

Probleme

1. Imaginaþi aplicaþii in care sa folosiþi cat mai multe din apelurile relative la comunicaþia ºi sincronizarea distribuita in reþele Novell
2. Studiaþi programele filecomm.cpp, ipxcomm.cpp, pipecomm.cpp ºi imaginaþi programe de aplicaþii (readers-writers, cei 5 filozofi, producator-consumator, etc)


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta