SEND(2) Linux - prirucka programatora SEND(2)
JMENO
send, sendto, sendmsg - posli zpravu do soketu
SYNTAXE
#include <sys/types.h>
#include <sys/socket.h>
int send(int s, const void *msg, int len, unsigned int flags);
int sendto(int s, const void *msg, int len, unsigned int flags, const
struct sockaddr *to, int tolen);
int sendmsg(int s, const struct msghdr *msg, unsigned int flags);
POPIS
Send, sendto, a sendmsg se pouzivaji k zasilani zprav do jinych soketu.
Send muze byt pouzito pouze, je-li soket spojeny zatimco sendto a send-
msg mohou byt pouzity kdykoliv.
Adresa ciloveho soketu je zadana parametrem to a tolen specifikuje jeho
velikost. Adresa zpravy je zadana v argumentu len. Je-li zprava prilis
dlouha, aby mola byt poslana atomicky, je vracena chyba EMSGSIZE a
zprava neni poslana.
Funkce send neposkytuje zadnou moznost indikace spravneho doruceni.
Lokalne detekovane chyby jsou indikovany navratovou hodnotou -1.
Pokud neni k dispozici zadne volne misto pro zpravu pred jejim preno-
sem, send se normalne zablokuje, pokud soket neni v neblokujicim modu.
Volani select(2) muze byt pouzito k zjisteni, je-li mozno poslat dalsi
data.
Parametr flags muze obsahovat jednu nebo vice z nasledujicich hodnot:
#define MSG_OOB 0x1 /* zpracuj out-of-band data */
#define MSG_DONTROUTE 0x4 /* obejdi routing, pouzij prime rozhrani*/
Flag MSG_OOB je pouzit pro posilani out-of-band dat do soketu, ktery to
podporuje (napr. SOCK_STREAM); pouzity protokol musi take podporovat
out-of-band data. MSG_DONTROUTE je normalne pouzivano pouze diagnos-
tickymi a routovacimi programy.
V recv(2) je obsazen popis struktury msghdr
NAVRATOVA HODNOTA
Volani vraci pocet poslanych znaku, nebo -1 pokud se objevila chyba.
CHYBY
EBADF Byl specifikovan neplatny deskriptor.
ENOTSOCK
Argument s neni soket
EFAULT Parametr je v neplatne casti adresoveho prostoru procesu.
EMSGSIZE
Soket pozaduje, aby tato zprava byla poslana atomicky, ale
velikost teto zpravy toto znemoznuje.
EWOULDBLOCK
Soket je oznacen jako neblokujici a pozadovana operace by blo-
kovala.
ENOBUFS System neni schopen alokovat interni buffery. Operace muze byt
uspesna az budou buffery k dispozici.
ENOBUFS Vystupni fronta pro sitove rozhrani je zaplnena. To obvykle
znamena, ze rozhrani prestalo posilat, ale muze to byt take
zpusobeno obcasnym pretizenim rozhrani.
SPLNUJE STANDARDY
4.4BSD, SVr4 (tato volani se poprve objevila ve 4.2BSD). SVr4 dokumen-
tuje dalsi chyby EINVAL, EINTR, EMSGSIZE, ENOSR, ENOMEM.
DALSI INFORMACE
fcntl(2), recv(2), select(2), getsockopt(2), socket(2), write(2)
BSD Man Page 2. cervence 1997 SEND(2)