Scroll to navigation

SEND(2) Linux - příručka programátora SEND(2)

JMÉNO

send, sendto, sendmsg - pošli zprávu 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 používají k zasílání zpráv do jiných soketů. Send může být použito pouze, je-li soket spojený zatímco sendto a sendmsg mohou být použity kdykoliv.

Adresa cílového soketu je zadána parametrem to a tolen specifikuje jeho velikost. Adresa zprávy je zadána v argumentu len. Je-li zpráva příliš dlouhá, aby mola být poslána atomicky, je vrácena chyba EMSGSIZE a zpráva není poslána.

Funkce send neposkytuje žádnou možnost indikace správného doručení. Lokálně detekované chyby jsou indikovány návratovou hodnotou -1.

Pokud není k dispozici žádné volné místo pro zprávu před jejím přenosem, send se normálně zablokuje, pokud soket není v neblokujícím módu. Volání select(2) může být použito k zjištění, je-li možno poslat další data.

Parametr flags může obsahovat jednu nebo více z následujících hodnot:

#define	MSG_OOB        0x1  /* zpracuj out-of-band data */
#define	MSG_DONTROUTE  0x4  /* obejdi routing, použij přímé rozhraní*/

Flag MSG_OOB je použit pro posílání out-of-band dat do soketu, který to podporuje (např. SOCK_STREAM); použitý protokol musí také podporovat out-of-band data. MSG_DONTROUTE je normálně používáno pouze diagnostickými a routovacími programy.

V recv(2) je obsažen popis struktury msghdr

NÁVRATOVÁ HODNOTA

Volání vrací počet poslaných znaků, nebo -1 pokud se objevila chyba.

CHYBY

Byl specifikován neplatný deskriptor.
Argument s není soket
Parametr je v neplatné části adresového prostoru procesu.
Soket požaduje, aby tato zpráva byla poslána atomicky, ale velikost této zprávy toto znemožňuje.
Soket je označen jako neblokující a požadovaná operace by blokovala.
Systém není schopen alokovat interní buffery. Operace může být úspěšná až budou buffery k dispozici.
Výstupní fronta pro síťové rozhraní je zaplněna. To obvykle znamená, že rozhraní přestalo posílat, ale může to být také způsobeno občasným přetížením rozhraní.

SPLŇUJE STANDARDY

4.4BSD, SVr4 (tato volání se poprvé objevila ve 4.2BSD). SVr4 dokumentuje další chyby EINVAL, EINTR, EMSGSIZE, ENOSR, ENOMEM.

DALŠÍ INFORMACE

fcntl(2), recv(2), select(2), getsockopt(2), socket(2), write(2)

VAROVÁNÍ

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

2. července 1997 BSD Man Page