WinSock-PL, Studia PŚK informatyka, Semestr 4, SK kolos


Specyfika komunikacji przy użyciu protokołu TCP/IP jest wzorowana na dostępie do pliku (w systemie UNIX) i wymaga utworzenia na każdym z komunikujących się węzłów/procesów struktury gniazda (ang. socket). Gniazdo jest końcem kanału komunikacyjnego dostępnym dla procesu. Operacja otwierania gniazda udostępnia procesowi deskryptor (uchwyt) używany następnie przy przesyłaniu i odbieraniu danych realizowanych jako zapis i odczyt z gniazda. Gniazda umożliwiają dwukierunkową transmisję danych, to znaczy przy pomocy jednego gniazda można zarówno wysyłać jak i odbierać informacje, podobnie jak pliku otwartego w odpowiednim trybie można używać zarówno do zapisu jak i odczytu informacji. Inaczej jednak niż w przypadku pliku gniazdo składa się z dwóch połówek: jednej służącej do wysyłania, a drugiej do odbierania danych za pomocą gniazda. Każdą z nich można niezależnie zamknąć w przypadku wykonywania na gnieździe tylko jednego rodzaju operacji.

Z gniazdami związane jest pojęcie domeny komunikacyjnej określającej parametry należących do niej gniazd: sposób adresowania i zestaw stosowanych protokołów (w naszym przypadku używamy domeny AF_INET - Internet). Dwa procesy chcące wymieniać informacje muszą posługiwać się gniazdami należącymi do tej samej domeny.

Poza domeną gniazdo jest charakteryzowane przez typ:

- gniazdo strumieniowe (ang. stream socket) inaczej połączeniowe zapewnia dwukierunkowy, wiarygodny i sekwencyjny przepływ danych bez strat i duplikatów, nie zachowujący granic między rekordami

- gniazdo datagramowe (ang. datagram socket) inaczej bezpołączeniowe zapewnia dwukierunkowy przepływ danych bez gwarancji co do wiarygodności, sekwencyjności i niepowielania tzn. datagramy mogą być otrzymywane przez proces w innej kolejności niż zostały nadane; mogą również być powielone. Istotne dla tego typu gniazd jest zachowywanie granic między transmitowanymi za ich pośrednictwem jednostkami danych. Gniazda tego typu są przykładem skrzynek pocztowych pośredniczących w wymianie informacji za pośrednictwem komunikatów

- gniazdo podstawowe (ang. raw socket) służy do implementowania nowych protokołów komunikacyjnych. Gniazda tego typu mają podobne własności co gniazda datagramowe, a ich dokładna charakterystyka zależy od protokołu

Moduł klienta/nadawcy:

1.Przygotowanie do komunikacji - polecenie WinSock-a WSAStartUp.

2.Otwarcie gniazda określonego typu w podanej domenie używającego podanego protokołu - polecenie SOCKET (domena Internet, typ strumieniowy, protokół TCP).

3.Nawiązanie połączenia przy pomocy danego gniazda klienta z gniazdem nasłuchującym na podanym serwerze - polecenie CONNECT (...). Nawiązanie połączenia odbywa się na zasadzie spotkania (ang. rendezvous): jeden z procesów - serwer - oczekuje na połączenie, które próbuje nawiązać drugi proces - klient.

4.Wysyłanie danych poprzez gniazdo klienta do gniazda na serwerze - polecenie SEND(...).

5.Zamknięcie gniazda klienta po transmisji - polecenie CLOSESOCKET(...).

6.Zwolnienie zasobów użytych do komunikacji - polecenie WinSock-a WSACleanUp.

UWAGI

Polecenia charakterystyczne dla modułu WinSock zaczynają się od ciągu „WSA”. Parametry poleceń podano tylko dla polecenia SOCKET, aby uwidocznić specyfikę komunikacji protokołem TCP/IP w sieci Internet. Należy również pamiętać o odmiennym modelu zapisu adresów sieciowych używanym przez procesory INTEL i protokoły sieciowe (są to tzw. intel byte order i network byte order) i odpowiednich konwersjach przy zapisie do struktur adresujących.

Moduł serwera/odbiorcy:

1.Przygotowanie do komunikacji - polecenie WinSock-a WSAStartUp.

2.Otwarcie gniazda określonego typu w podanej domenie używającego podanego protokołu - polecenie SOCKET (domena Internet, typ strumieniowy, protokół TCP). Zarówno serwer jak i klient muszą otworzyć własne gniazda typu strumieniowego przed rozpoczęciem wymiany informacji.

3.Nadanie gniazdku nazwy (adresu) - polecenie BIND(...). Nazwane muszą być gniazda używane przez proces udostępniający usługi (serwer) oraz przez proces korzystający z usług (klient) w trybie bezpołączeniowym (datagram). Proces działający jako klient w trybie połączeniowym (stream) nie musi nazywać gniazd (typu strumieniowego w tym przypadku) w ten sposób.

4.Ustawienie gniazda w tryb nasłuchiwania - polecenie LISTEN(...). Serwer udostępniający usługi jest partnerem pasywnym podczas nawiązywania połączenia. Po przypisaniu gniazdku nazwy zaczyna oczekiwać na połączenie z klientem przestawiając gniazdo w tryb nasłuchiwania i przyjmowania połączeń (nasłuchiwanie odbywa się na porcie podanym w funkcji BIND).

5.Przyjęcie połączenia przy pomocy danego gniazda - polecenie ACCEPT(...). Na potrzeby przyjętego połączenia tworzone jest nowe gniazdo do komunikacji z zaakceptowanym klientem. Parametry nowo utworzonego gniazda są takie, jak parametry gniazda podanego w wywołaniu funkcji ACCEPT.

6.Odbieranie danych wysyłanych przez klienta - polecenie RECV(...).

7.Zamknięcie gniazd serwera po transmisji - polecenie CLOSESOCKET(...). Zamykamy gniazdo nasłuchujące (!) i utworzone do odbierania danych od klienta.

8.Zwolnienie zasobów użytych do komunikacji - polecenie WinSock-a WSACleanUp.

UWAGI KOŃCOWE

Wymiana informacji za pomocą gniazd odbywa się zwykle między procesami pozostającymi w relacji klient-serwer. Serwer nadaje nazwę gniazdku, które ma pośredniczyć w udostępnianiu przezeń usług, klient próbuje nawiązać połączenie między własnym gniazdem a nazwanym przez serwer.

Zamknięcie gniazda zrywa połączenie nawiązane przy pomocy tego gniazda. Dane obecne w gnieździe w momencie zamykania mogą zostać przez proces odebrane przy pomocy operacji odczyt.

Gniazda umożliwiają dwukierunkową transmisję danych, to znaczy przy pomocy jednego gniazda można zarówno wysyłać jak i odbierać informacje. Proces może zamknąć wybraną połowę gniazda odpowiedzialną za wysyłanie bądź odbieranie danych. Taki sposób zamknięcia gniazda nie zrywa połączenia.



Wyszukiwarka

Podobne podstrony:
Netbios, Studia PŚK informatyka, Semestr 4, SK kolos
dhcp, Studia PŚK informatyka, Semestr 4, SK kolos
NCBb, Studia PŚK informatyka, Semestr 4, SK kolos
siecii, Studia PŚK informatyka, Semestr 4, SK kolos
Sockety, Studia PŚK informatyka, Semestr 4, SK kolos
Sieci, Studia PŚK informatyka, Semestr 4, SK kolos
sieci ściąga, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe
Pytania-sieci, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe, gawlik,
Sieci komputerowe, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe, gaw
materialy, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe
http & krypto, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe, Sieci p
ncb, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, kolos sieci
Sieci komputerowe, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe, sie
Zestaw 3, Studia PŚK informatyka, Semestr 4, sieci, kolos sieci, SK, sieci komputerowe, gawlik, Kolo
ssciaga, Studia PŚK informatyka, Semestr 4, Bazy Danych 2, Bazy Danych Zaliczenie Wykladu, Bazy Dany
Si lab1, Studia PŚK informatyka, Semestr 5, semestr 5, SI 2, Sprawozdanie lab1
sc, Studia PŚK informatyka, semestr 2, archtektura
G312A-K04-P5, Studia PŚK informatyka, Semestr 5, semestr 5, SI 2, Sprawozdanie lab5
02.Protokoły, Studia PŚK informatyka, Semestr 5, semestr 5, moje, Pai, Projektowanie aplikacji inter

więcej podobnych podstron