Wykład 6 - Interfejs gniazd #
Zakres wykładu #
- Gniazda a system plików UNIXa: deskryptory gniazd/plików, read/write/close, obsługa błędów, API gniazd częscią interfejsu jądra.
- Modele prostej komunikacji klient-serwer w realizacji połączeniowej i datagramowej
- Tworzenie gniazd:
socket()
, rodziny: protokołów i adresów, opcje gniazd i - Struktury adresowe gniazd: ogólna
sockaddr
, domeny inetsockaddr_in
, domeny Unixsockaddr_un
. - Porządek sieciowy bajtów i funkcje do zmiany porządku bajtów:
htons()
,htonl()
,ntohs()
,ntohl()
- Funkcje do konwersji adresów:
inet_addr()
,inet_ntoa()
,inet_aton()
,inet_ntop()
,inet_pton()
- Korzystanie z nazw stacji: struktura
hostent
i funkcjegethostbyname()
,gethostbyaddr()
; strukturaaddrinfo
i funkcje:getaddrinfo()
,freeaddrinfo()
,gai_strerror()
,getnameinfo()
- Adresowanie gniazda TCP: jawne (
bind()
), niejawne (connect()
) - Otwieranie połączenia: strona bierna (
listen()
,accept
), strona aktywna (connect
) - Przesyłanie danych przez połączenie TCP:
read()
,recv()
,readv()
,recvmsg
,write()
,send()
,writev()
,sendmsg
, sygnałSIGPIPE
. - Zamykanie połączenia: uporządkowane (
shutdown()
) i nieuporządkowane (close()
). Zwlekanie (linger). - Komunikacja UDP: adresowanie (nadawca, odbiorca), podstawowe funkcje komunikacji:
recvfrom()
,sendto()
- Połączone gniazda UDP: jak i dlaczego. Asynchroniczny błąd komunikacji UDP.
Uwaga #
Kolokwia wykładowe oczekują od studenta znajomości ogólnych koncepcji budowy i podstawowych własności interfejsu gniazd, a także zasad wykorzystania podstawowych funkcji interfejsu gniazd do realizacji komunikacji połączeniowej i bezpołączeniowej. Nie jest wymagane pamiętanie takich szczegółów interfejsu, jak np. argumentów funkcji.
Materiały #
- Slajdy: Inet_2.pdf
- Dokumentacja The GNU C library: rozdz. 16: Sockets, rozdz. 13.6 Fast Scatter-Gather I/O
- Literatura uzupełniająca: W.R. Stevens, Unix programowanie usług sieciowych, t. 1, wyd. 2: API: gniazda i XTI