Zadanie 1 dostateczny Proszę napisać proces klienta i serwera

Transkrypt

Zadanie 1 dostateczny Proszę napisać proces klienta i serwera
Zadanie 1 ­ dostateczny Proszę napisać proces klienta i serwera wykonujące poniższe zadania. Klient przesyła do serwera komunikaty zawierające wprowadzany z konsoli tekst. Komunikat od klienta jest w postaci podanej struktury: typedef struct { int typ; // typ komunikatu int from; // nr procesu który wysłał komunikat int ile; // ile było malych liter char text[SIZE]; // tekst komunikatu } mss_t; Serwer odbiera komunikaty wysyłane przez klientów i odsyła napisy otrzymane w polu text ale zamienia małe litery na duże. Procesy klienta i serwera uruchamiane są niezależnie z linii poleceń. Zadanie 2 ­ dobry Szukanie liczb pierwszych z wykorzystaniem komunikacji QNX. Procesy klientów mają zgłaszać swoją gotowość do wykonania obliczeń procesowi serwera, a ten przekazuje im do obliczeń kolejne podprzedziały, w których klienci znajdują liczby pierwsze. Pseudokod: Start Klient: MsgSend(Jestem gotowy) Server: MsgReceive(Klient gotowy); MsgReply(Przedział do przetworzenia) Klient: Przetwarza przedział; MsgSend(znaleziono liczby pierwsze) Server: MsgReceive(otrzymano liczby pierwsze),MsgReply(Potwierdzam) Goto start Zadanie 3 ­ bardzo dobry Proces macierzysty powinien: ●
Utworzyć kanał za pomocą funkcji ChannelCreate(). ●
Utworzyć zadaną liczbę procesów potomnych P1, P2,...,PN (np. za pomocą funkcji fork()). ●
Odbierać i potwierdzać komunikaty od procesów potomnych. ●
Wykryć kiedy zakończą się procesy potomne. ●
Aby odebrać kody powrotu procesów potomnych wykonać stosowna liczbę funkcji wait(&status). Proces potomny powinien wysyłać do procesu macierzystego komunikaty w formacie: struct { int typ; // Typ komunikatu int od; // Numer procesu char tekst[SIZE];
// Tekst komunikatu } kom_t; Proces potomny powinien: ●
Utworzyć połączenie do procesu macierzystego za pomocą funkcji ConnectAttach(). ●
Wysyłać do procesu macierzystego komunikaty postaci:"Komunikat: k od procesu i ", typ = 1 ●
Po wysłaniu zadanej przez parametry programu liczby komunikatów wysłać do procesu macierzystego komunikat o zakończeniu (typ = 0). ●
Kończąc się powinien wykonać funkcje exit(Numer_procesu)