socket

SOCKET(2)		 Linux - prirucka programatora		     SOCKET(2)



JMENO
       socket - vytvor soket

SYNTAXE
       #include <sys/types.h>
       #include <sys/socket.h>

       int socket(int domain, int type, int protocol);

POPIS
       Socket vytvori soket a vrati jeho deskriptor.

       Parametr	 domain	 specifikuje jmenny prostor, ve kterem se bude komuni-
       kace odehravat; tim je zvolena i	 rodina	 protokolu,  ktere  mohou  byt
       pouzity.	 Tyto  rodiny  jsou  definovany v hlavickovem souboru sys/soc-
       ket.h.  V soucasne dobe jsou podporovany tyto formaty:


	      AF_UNIX  (interni protokol UNIXu)

	      AF_INET  (Internetovy jmenny prostor)

	      AF_ISO   (protokoly ISO)

	      AF_NS    (protokoly Xerox Network Systems)

	      AF_IMPLINK
		       (IMP "host at IMP" link layer)

       Soket ma typ type, ktery specifikuje komunikacni styl. Podporovane typy
       jsou:

	      SOCK_STREAM
	      SOCK_DGRAM
	      SOCK_RAW
	      SOCK_SEQPACKET
	      SOCK_RDM

       A SOCK_STREAM poskytuje sekvencni, spolehlivou a dvoustrannou proudovou
       komunikaci.  Muze byt podporovan mechanismus prenosu  out-of-band  dat.
       SOCK_DGRAM  soket podporuje datagramy (nespojovane, nespolehlive zpravy
       pevne (typicky male) maximalni delky).  SOCK_SEQPACKET soket  poskytuje
       sekvencni,  spolehlivy,	dvojstranny  prenos  dat  pro  datagramy pevne
       maximalni delky; konzument muze cist tato data volanim jadra. Tento typ
       je  v  soucasne dobe implementovan pouze pro AF_NS.  SOCK_RAW poskytuje
       pristup k internim sitovym  protokolum  a  rozhranim.   Typy  SOCK_RAW,
       ktery  je  k  dispozici	pouze  superuzivateli  a  SOCK_RDM,  ktery  je
       planovan, ale jeste neni implementovan, zde nejsou popsany.

       Argument protocol specifikuje, ktery konkretni protokol ma byt  pouzit.
       Normalne	 existuje  pouze  jeden	 protokol, ktery se da pouzit u soketu
       konkretniho typu a dane rodiny protokolu. Ale je samozrejme mozne,  aby
       existovalo  protokolu  vice. Cislo protokolu zavisi na pouzitem jmennem
       prostoru, blizsi informace naleznete v protocols(5).

       Sokety typu SOCK_STREAM jsou plne duplexni proudy dat  podobne  rouram.
       Proudovy	 soket	musi  byt  spojen  pred	 tim,  nez  prijme  nebo posle
       jakakoliv data. Spojeni s jinym soketem se provadi volanim  connect(2).
       Jestlize	 bylo spojeni navazano, mohou byt prenasena data pomoci volani
       read(2) a write(2) nebo nekterou variantou volani  send(2)  a  recv(2).
       Je-li  sezeni  ukonceno,	 muzete	 zavolat funkci close(2).  Out-of-band
       data mohou byt poslana. Konkretni informace najdete v send(2).  Out-of-
       band data mohou byt prijata volanim recv(2).

       Komunikacni protokoly, ktere implementuji SOCK_STREAM zarucuji, ze data
       se neztrati a ani nebudou duplikovana. Je-li cast dat, pro kterou je  k
       dispozici  prostor  ve vyrovnavaci pameti, nedorucena po rozumnou dobu,
       je spojeni prohlaseno za prerusene a volani budou vracet chyby  (-1)  a
       globalni promenna errno bude nastavena na ETIMEDOUT .

       Nektere protokoly uchovavaji sokety v cinnosti tim, ze priblizne kazdou
       minutu posilaji packet, nevyskytuje-li se jina aktivita. Neobjevi-li se
       odpoved po delsi dobu (napr. 5 minut), je opet indikovana chyba. Signal
       SIGPIPE je poslan procesu, jestlize proces posle	 data  do  "rozbiteho"
       proudu.	 To  zpusobi,  ze  "naivni"  procesy,  ktere neobsluhuji tento
       signal skonci.

       SOCK_SEQPACKET sokety pouzivaji stejna volani jako SOCK_STREAM  sokety.
       Jedinym	rozdilem je, ze volani read(2) vraci pouze pozadovane mnozstvi
       dat a ostatni data budou znicena.

       SOCK_DGRAM a SOCK_RAW sokety povoluji posilani paketu adresatum	speci-
       fikovanym  ve  volani send(2).  Datagramy jsou obvykle prijimany pomoci
       volani recvfrom(2), ktere vraci dalsi datagram s jeho navratovou	 adre-
       sou.

       Volani  fcntl(2)	 muze  byt  pouzito  ke specifikovani skupiny procesu,
       ktere obdrzi signal SIGURG pri  prichodu	 out-of-band  dat.  Muze  take
       povolit	 neblokujici  vstupne-vystupni	operace	 pripadne  asynchronni
       hlaseni vstupne-vystupnich udalosti signalem SIGIO.

       Operace soketu jsou rizeny volbami soketu.  Tyto	 volby	jsou  specifi-
       kovany  v  hlavickovem  souboru	sys/socket.h.  Setsockopt(2) a getsoc-
       kopt(2) se pouzivaji pro jejich nastaveni a k ziskani jejich aktualniho
       stavu.

NAVRATOVA HODNOTA
       -1  je  vracena,	 jestlize  nastala  chyba,  jinak je vracen deskriptor
       soketu.

CHYBY
       EPROTONOSUPPORT
	       Komunikacni styl nebo protokol neni  podporovan	specifikovanym
	       jmennym prostorem.

       EMFILE  Tabulka deskriptoru procesu je zaplnena.

       ENFILE  Tabulka otevrenych souboru systemu je zaplnena.

       EACCESS Nemate  pravo vytvorit soket specifikovaneho typu a/nebo proto-
	       kolu.

       ENOBUFS Nedostatek vyrovnavacich pameti.	 Soket	nemuze	byt  vytvoren,
	       dokud nedojde k uvolneni zdroju.

SPLNUJE STANDARDY
       4.4BSD  (volani jadra socket se objevilo v 4.2BSD). Obvykle je kompati-
       bilni s ne-BSD systemy, ktere  podporuji	 BSD  Sokety  (vcetne  variant
       Systemu V).

DALSI INFORMACE
       accept(2), bind(2), connect(2), getprotoent(3), getsockname(2), getsoc-
       kopt(2), ioctl(2), listen(2),  read(2),	recv(2),  select(2),  send(2),
       shutdown(2), socketpair(2), write(2)

       "An  Introductory 4.3 BSD Interprocess Communication Tutorial" je znovu
       vydano v UNIX Programmer's Supplementary Documents Volume 1

       "BSD Interprocess Communication Tutorial" je znovu vydano v  UNIX  Pro-
       grammer's Supplementary Documents Volume 1



BSD Man Page			 4. dubna 1997			     SOCKET(2)

Personal Tools