Provided by: manpages-cs_0.18.20090209-3_all bug

JMÉNO

       socket - vytvoř soket

SYNTAXE

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

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

POPIS

       Socket vytvoří soket a vrátí jeho deskriptor.

       Parametr domain specifikuje jmenný prostor, ve kterém se bude komunikace odehrávat; tím je
       zvolena i rodina protokolů, které  mohou  být  použity.  Tyto  rodiny  jsou  definovány  v
       hlavičkovém souboru sys/socket.h. V současné době jsou podporovány tyto formáty:

              AF_UNIX  (interní protokol UNIXu)

              AF_INET  (Internetový jmenný prostor)

              AF_ISO   (protokoly ISO)

              AF_NS    (protokoly Xerox Network Systems)

              AF_IMPLINK
                       (IMP “host at IMP” link layer)

       Soket má typ type, který specifikuje komunikační styl. Podporované typy jsou:

              SOCK_STREAM
              SOCK_DGRAM
              SOCK_RAW
              SOCK_SEQPACKET
              SOCK_RDM

       A  SOCK_STREAM  poskytuje sekvenční, spolehlivou a dvoustrannou proudovou komunikaci. Může
       být podporován mechanismus přenosu out-of-band dat. SOCK_DGRAM soket  podporuje  datagramy
       (nespojované,  nespolehlivé  zprávy  pevné (typicky malé) maximální délky). SOCK_SEQPACKET
       soket  poskytuje  sekvenční,  spolehlivý,  dvojstranný  přenos  dat  pro  datagramy  pevné
       maximální délky; konzument může číst tato data voláním jádra. Tento typ je v současné době
       implementován pouze pro AF_NS. SOCK_RAW poskytuje přístup k interním síťovým protokolům  a
       rozhraním.  Typy  SOCK_RAW, který je k dispozici pouze superuživateli a SOCK_RDM, který je
       plánován, ale ještě není implementován, zde nejsou popsány.

       Argument protocol specifikuje, který konkrétní protokol má být použit.  Normálně  existuje
       pouze  jeden  protokol,  který  se  dá  použít  u  soketu  konkrétního  typu a dané rodiny
       protokolů. Ale je samozřejmě možné, aby existovalo protokolů více. Číslo protokolu  závisí
       na použitém jmenném prostoru, bližší informace naleznete v protocols(5).

       Sokety  typu SOCK_STREAM jsou plně duplexní proudy dat podobné rourám. Proudový soket musí
       být spojen před tím, než přijme nebo pošle jakákoliv data.  Spojení  s  jiným  soketem  se
       provádí  voláním  connect(2).  Jestliže  bylo  spojení  navázáno, mohou být přenášena data
       pomocí volání read(2) a write(2) nebo některou variantou volání send(2) a  recv(2).  Je-li
       sezení  ukončeno,  můžete  zavolat  funkci  close(2).  Out-of-band data mohou být poslána.
       Konkrétní informace najdete v send(2). Out-of-band data mohou být přijata voláním recv(2).

       Komunikační protokoly, které implementují SOCK_STREAM zaručují, že data se neztratí a  ani
       nebudou  duplikována.  Je-li  část  dat,  pro kterou je k dispozici prostor ve vyrovnávací
       paměti, nedoručena po rozumnou dobu, je spojení prohlášeno za  přerušené  a  volání  budou
       vracet chyby (-1) a globální proměnná errno bude nastavena na ETIMEDOUT .

       Některé  protokoly  uchovávají  sokety v činnosti tím, že přibližně každou minutu posílají
       packet, nevyskytuje-li se jiná aktivita. Neobjeví-li se odpověď po  delší  dobu  (např.  5
       minut),  je opět indikována chyba. Signál SIGPIPE je poslán procesu, jestliže proces pošle
       data do "rozbitého" proudu. To způsobí,  že  "naivní"  procesy,  které  neobsluhují  tento
       signál skončí.

       SOCK_SEQPACKET  sokety  používají  stejná volání jako SOCK_STREAM sokety. Jediným rozdílem
       je, že volání read(2) vrací pouze požadované množství dat a ostatní data budou zničena.

       SOCK_DGRAM a SOCK_RAW sokety povolují posílání paketů adresátům specifikovaným  ve  volání
       send(2).  Datagramy  jsou  obvykle  přijímány pomocí volání recvfrom(2), které vrací další
       datagram s jeho návratovou adresou.

       Volání fcntl(2) může být použito ke specifikování skupiny  procesů,  které  obdrží  signál
       SIGURG  při  příchodu  out-of-band  dat.  Může  také  povolit neblokující vstupně-výstupní
       operace případně asynchronní hlášení vstupně-výstupních událostí signálem SIGIO.

       Operace soketu jsou řízeny volbami soketů. Tyto volby  jsou  specifikovány  v  hlavičkovém
       souboru  sys/socket.h. Setsockopt(2) a getsockopt(2) se používají pro jejich nastavení a k
       získání jejich aktuálního stavu.

NÁVRATOVÁ HODNOTA

       -1 je vrácena, jestliže nastala chyba, jinak je vrácen deskriptor soketu.

CHYBY

       EPROTONOSUPPORT
               Komunikační styl nebo protokol není podporován specifikovaným jmenným prostorem.

       EMFILE  Tabulka deskriptorů procesu je zaplněna.

       ENFILE  Tabulka otevřených souborů systému je zaplněna.

       EACCESS Nemáte právo vytvořit soket specifikovaného typu a/nebo protokolu.

       ENOBUFS Nedostatek vyrovnávacích pamětí.  Soket  nemůže  být  vytvořen,  dokud  nedojde  k
               uvolnění zdrojů.

SPLŇUJE STANDARDY

       4.4BSD  (volání  jádra  socket  se  objevilo  v  4.2BSD). Obvykle je kompatibilní s ne-BSD
       systémy, které podporují BSD Sokety (včetně variant Systému V).

DALŠÍ INFORMACE

       accept(2), bind(2), connect(2), getprotoent(3), getsockname(2),  getsockopt(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 vydáno v UNIX
       Programmer's Supplementary Documents Volume 1

       "BSD  Interprocess  Communication  Tutorial"  je  znovu   vydáno   v   UNIX   Programmer's
       Supplementary Documents Volume 1

VAROVÁNÍ

       Překlad  je  pravděpodobně  zastaralý.  Pokud chcete pomoci s jeho aktualizací, zamiřte na
       http://man-pages-cs-wiki.homelinux.net/