|
||
|
|
Gniazda TCP, UDPCelem ćwiczenia jest omówienie zagadnień związanych z programowaniem gniazd TCP i UDP w systemiach UNIX. Bazą dla ich przedstawienia będą programy napisane w jęz. C i Java. Szczególny nacisk zostanie położony na przedstawienie problemów komunikacyjnych istniejących na styku różnych platform sprzętowych, systemowych i programowych. Laboratorium zakłada podstawową znajomość tematyki programowania gniazd. Materiały do ćwiczenia:
Zadanie domowe:Zadanie: 1
Tytuł: Rozgłaszanie informacji przy użyciu multicastu
Treść: Zadanie polega na napisaniu klienta (jęz. C/C++) oraz serwera (jez.
Java), którzy będą wymieniali między sobą dane przy wykorzystaniu mechanizmu
rozgłaszania grupowego IP (multicast IP). W systemie uruchomionych ma zostać
wielu klientów - nadawców wiadomości oraz wiele serwerów - odbiorców
wiadomości. Klient i serwer jako argumenty wejściowe powinny przyjmować adres
transportowy (tj. adres IP i numer portu) klient dodatkowo powininen przyjmować
identyfikator wiadomości do przesłania. Przykładowe wywołania mogą wyglądać
następująco:
serwer 239.0.0.0/2000
klient lilac.ics.agh.edu.pl/2000 A
Identyfikator wiadomości przekazywany w argumencie wywołania programu klienta
powinien odnosić się do określonych (na stałe) w kodzie klienta wartości
opisanych typem zdefiniowanym poniższą gramatyką:
<typ_wiadomości> ::= <typ_prosty> | <typ_złożony>
<typ_prosty> ::= <typ_całkowity> | <typ_łańuchowy> | <typ_boolean>
<typ_złożony> ::= "struct {" <typ_wiadomości>* "}"
<typ_całkowity> ::= //wybrany 32 bitowy typ całkowity
<typ_łańcuchowy> ::= //łańcuch znaków w wybranym przez siebie
//kodowaniu np. ASCII, UTF-8 lub UNICODE
Np.
A - int numberOfClients;
B - struct person {
char * nick;
int age;
boolean hacker;
}
C - struct party{
struct date {
int day;
int month;
int year;
};
boolean gotDrunk;
char * description;
}
itd.
Proszę zdefiniować co najmniej 3 typy proste i 3 złożone.
Serwer powinien umieć odbierać i wypisywać na ekran dowolne wiadomości opisane
powyższą gramatyką i nie powinien być w żaden sposób zależny od klienta.
Zadanie 2:
Tytuł: Rozgłaszanie wiadomości w oparciu o centralną usługę EventService
Treść: W oparciu o serializację i deserializację wiadomości opracowaną w
zadaniu 1 należy przygotować niezawodne rozsyłanie wiadomości od nadawców do
obiorców poprzez centralną usługę EventService. Usługa ta (jez. Java) powinna
odbierać od odbiorców (jez. C - Sparc) żadania zapisu na wybrany temat
(określany typem wiadomości) z jednej strony. Z drugiej zaś powinna
przekazywać przesłane przez nadawców (jez. C - Intel) wiadomości do wszystkich
zainteresowanych odbiorców.
Nie ma wymagania, aby odbiorca i nadawca byli zintegrowani w jednym
programie. Należy natomiast zapewnić, aby poszczególne kanały
komunikacyjne obsługiwane były niezależnie od siebie tak, aby w razie
wystąpienia problemów z komunikacją z jednym z klientów pozostali byli
obsługiwani bez przeszkód.
Należy zapewnić możliwość zgłaszania się nowych odbiorców i nadawców
wiadomości oraz rezygnacji istniejących.
Materiały dodatkowe:Zagadnienia do kolokwium:
| powrót | Ćwiczenie następne | |