|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Servicii de comunicatie prin mesaje in retele Novell | ||||||
|
||||||
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 Fiºiere antet necesare: #include <nit.h> 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 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. 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 Rezultat: int SUCCESSFULL 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 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. 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). Rezultat: int SUCCESSFUL 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. 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 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). Rezultat: int SUCCESSFUL 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). Rezultat: int SUCCESSFUL 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) 3) inchiderea semaforului (Close). int OpenSemaphore(char *semaphoreName, int initialValue, long *semaphoreHandle, Rezultat: int ExamineSemaphore(long semaphoreHandle, int *semaphoreValue, Examineaza un semafor deschis. Depune in semaphoreValue, respectiv openCount, valoarea contorului de semafor, respectiv numarul de procese care au deschis semaforul. Rezultat: 0x00 SUCCESSFUL 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: 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: 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: 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 |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|