Index szkola 472 (4) Sacks Oliver Antropolog na Marsie (2) www nie com pl 3 rhl03 (2) Chmielewska Joanna Zlota mucha Henryk Sienkiewicz Ogniem i mieczem rozdzial 02 (257) ProcessFormAction 08 (70) |
[ Pobierz całość w formacie PDF ] .Funkcja systemowa listen()- okresla kolejke zgloszen klientow.#include <sys/types.h>#include <sys/socket.h>int listen(int fd, int backlog);ARGUMENTY:fd - deskryptor gniazda.backlog - maksymalna liczba zgloszen polaczenia z serwerem.WYNIK:0 - w przypadku sukcesu, lubwartosc ujemna - w przypadku bledu, np:EBADF - fd nie jest poprawnym deskryptorem.ENOTSOCK - fd nie jest deskryptorem gniazda.EOPNOTSUPP - funkcja listen() nie jest zaimplementowana dla naszej rodziny.Implementacja:{if (fd nie jest poprawnym deskryptorem)return(-EBADF);if (fd nie jest deskryptorem gniazda)return(-ENOTSOCK);if (jestesmy polaczeni)return(-EINVAL);if (funkcja listen() jest okreslona dla naszej rodziny){Wykonujemy funkcje rodziny (unix_listen(),inet_listen()).if (funkcja rodziny zakonczyla sie pomyslnie)ustawiamy znacznik SO_ACCEPTCON.}Zwracamy 0 w przypadku sukcesu, lub warosc ujemna zwrocona przez funkcje rodziny.}Opis funkcji listen() z poziomu rodziny protokolow(unix_listen(),inet_listen()) :Funkcja ustala maksymalna dlugosc kolejki klientow czekajacych na polaczenie.Wartosc ta jest pamietana w polu max_ack_backlogstruktury sock i jest ograniczona stala SOMAXCONN=128.W przypadku rodziny Unixa gniazdo musi byc strumeniowe i miec juzdowiazana nazwe.W przypadku rodziny Inernetu jesli gniazdo nie ma nazwy, tolisten() automatycznie ja dowiaze.Funkcja systemowa shutdown()- okresla sterowanie przeplywem przy zamykaniu gniazda.#include <sys/types.h>#include <sys/socket.h>int shutdown(int sockfd, int how);ARGUMENTY:sockfd - deskryptor gniazda.how - wartosc okreslajaca sposob zamkniecia gniazda.WYNIK:0 - w przypadku sukcesu, lubwartosc ujemna - w przypadku bledu, np:EBADF - sockfd nie jest poprawnym deskryptorem.ENOTSOCK - sockfd nie jest deskryptorem gniazda.ENOTCONN - gniazdo jest niepolaczone z zadnym innym.Implementacja:{if (fd nie jest poprawnym deskryptorem)return(-EBADF);if (fd nie jest deskryptorem gniazda)return(-ENOTSOCK);Wykonujemy funkcje rodziny (unix_shutdown(),inet_shutdown()).Zwracamy wynik funkcji rodziny.}Opis funkcji shutdown() z poziomu rodziny protokolow(unix_shutdown(),inet_shutdown()) :Funkcja ustawia pole shutdown struktury sock stalymi RCV_SHUTDOWN,SEND_SHUTDOWN,SHUTDOWN_MASK w zaleznosci od parametru how.I tak:how=0 - gniazdo nie moze juz przyjac zadnych komunikatow.how=1 - gniazdo nie moze juz wysylac zadnych komunikatow.how=2 - gniazdo nie moze przyjmowac, ani wysylac zadnych komunikatow.BibliografiaPliki zrodlowe Linuxa:include/linux/net.h -definicje stalych i struktur.include/linux/socket.h -definicje stalych.net/socket.c -funkcje systemowe dla gniazd.net/unix/af_unix.c -funkcje rodziny Unixa.net/ipv4/af_inet.c -funkcje rodziny Internetu.R.Stevens -"Programowanie zastosowan sieciowych w systemie unix" - rozdzial 6 : "Gniazda BSD".Autor:Tomasz Parczynski [ Pobierz całość w formacie PDF ] |
||||
Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl. | |||||