Provided by:
manpages-cs_0.18.20090209-1_all 
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/