send

Autres langues

Langue: ru

Autres versions - même langue

Version: éÀÌØ 1999 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

îáú÷áîéå

send, sendto, sendmsg - ÏÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ × ÓÏËÅÔ

ëòáôëáñ ó÷ïäëá

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

int send(int s, const void *msg, size_t len, int flags);
int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
int sendmsg(int s, const struct msghdr *msg, int flags);

ïðéóáîéå

send, sendto, É sendmsg ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ÐÅÒÅÓÙÌËÉ ÓÏÏÂÝÅÎÉÊ ÎÁ ÄÒÕÇÏÊ ÓÏËÅÔ. send ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ÔÏÌØËÏ ÅÓÌÉ ÓÏËÅÔ ÎÁÈÏÄÉÔÓÑ × ÓÏÅÄÉÎÅÎÎÏÍ ÓÏÓÔÏÑÎÉÉ, ÔÏÇÄÁ ËÁË sendto É sendmsg ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ÌÀÂÏÅ ×ÒÅÍÑ.

áÄÒÅÓ ÐÏÌÕÞÁÔÅÌÑ ÚÁÄÁÅÔÓÑ × ÐÁÒÁÍÅÔÒÅ to ÄÌÉÎÙ tolen. äÌÉÎÁ ÓÏÏÂÝÅÎÉÑ ÚÁÄÁÅÔÓÑ × ÐÁÒÁÍÅÔÒÅ len. åÓÌÉ ÓÏÏÂÝÅÎÉÅ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ, ÞÔÏÂÙ ÎÉÖÅÌÅÖÁÝÉÊ ÐÒÏÔÏËÏÌ ÓÍÏÇ ÁÔÏÍÁÒÎÏ ÏÔÏÓÌÁÔØ ÅÇÏ, ×ÏÚ×ÒÁÝÁÅÔÓÑ ËÏÄ ÏÛÉÂËÉ EMSGSIZE, Á ÓÏÏÂÝÅÎÉÅ ÎÅ ÏÔÓÙÌÁÅÔÓÑ.

No indication of failure to deliver is implicit in a send. ìÏËÁÌØÎÙÅ ÏÛÉÂËÉ ÏÂÏÚÎÁÞÁÀÔÓÑ Ó ÐÏÍÏÝØÀ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÚÎÁÞÅÎÉÑ -1.

ëÏÇÄÁ ÓÏÏÂÝÅÎÉÅ ÎÅ ÐÏÍÅÝÁÅÔÓÑ × ÂÕÆÅÒ ÏÔÐÒÁ×ËÉ ÓÏËÅÔÁ, send ÏÂÙÞÎÏ ÄÏÖÉÄÁÅÔÓÑ ÚÁ×ÅÒÛÅÎÉÑ ÏÔÐÒÁ×ËÉ, ÅÓÌÉ ÔÏÌØËÏ ÓÏËÅÔ ÎÅ ÎÁÈÏÄÉÔÓÑ × ÎÅÂÌÏËÉÒÕÀÝÅÍ ÒÅÖÉÍÅ. åÓÌÉ ÔÁË, ÔÏ ×ÏÚ×ÒÁÝÁÅÔÓÑ EAGAIN. óÉÓÔÅÍÎÙÊ ×ÙÚÏ× select(2) ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ×ÙÑÓÎÅÎÉÑ ×ÏÚÍÏÖÎÏÓÔÉ ÏÔÐÒÁ×ËÉ ÄÁÎÎÙÈ.

ðÁÒÁÍÅÔÒ flags Ñ×ÌÑÅÔÓÑ ÂÉÔÏ×ÏÊ ÍÁÓËÏÊ É ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÔÁËÉÅ ÆÌÁÇÉ:

MSG_OOB
ðÏÓÙÌÁÅÔ ×ÎÅÐÏÔÏËÏ×ÙÅ ÄÁÎÎÙÅ, ÅÓÌÉ ÓÏËÅÔ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÔÁËÏÅ (ÎÁÐÒÉÍÅÒ, ÓÏËÅÔÙ ÔÉÐÁ SOCK_STREAM); ÎÉÖÅÌÅÖÁÝÉÊ ÐÒÏÔÏËÏÌ ÔÁËÖÅ ÄÏÌÖÅÎ ÐÏÄÄÅÒÖÉ×ÁÔØ ×ÎÅÐÏÔÏËÏ×ÙÅ ÄÁÎÎÙÅ.
MSG_DONTROUTE
îÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÍÁÒÛÒÕÔÉÚÁÃÉÀ ÐÒÉ ÏÔÐÒÁ×ËÅ ÐÁËÅÔÁ, Á ÐÏÓÙÌÁÔØ ÅÇÏ ÔÏÌØËÏ ÎÁ ÈÏÓÔÙ × ÌÏËÁÌØÎÏÊ ÓÅÔÉ. ïÂÙÞÎÏ ÜÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ × ÄÉÁÇÎÏÓÔÉÞÅÓËÉÈ ÐÒÏÇÒÁÍÍÁÈ É ÐÒÏÇÒÁÍÍÁÈ ÍÁÒÛÒÕÔÉÚÁÃÉÉ. üÔÏÔ ÆÌÁÇ ÏÐÒÅÄÅÌÅÎ ÔÏÌØËÏ ÄÌÑ ÍÁÒÛÒÕÔÉÚÉÒÕÅÍÙÈ ÓÅÍÅÊÓÔ× ÐÒÏÔÏËÏÌÏ×; ÐÁËÅÔÎÙÅ ÓÏËÅÔÙ ÎÅ ÉÓÐÏÌØÚÕÀÔ ÍÁÒÛÒÕÔÉÚÁÃÉÀ.
MSG_DONTWAIT
÷ËÌÀÞÁÅÔ ÎÅÂÌÏËÉÒÕÀÝÉÊ ÒÅÖÉÍ; ÅÓÌÉ ÂÙ ÏÐÅÒÁÃÉÑ ÄÏÌÖÎÁ ÂÙÌÁ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ, ×ÏÚ×ÒÁÝÁÅÔÓÑ EAGAIN (ÜÔÏÔ ÒÅÖÉÍ ÔÁËÖÅ ÍÏÖÎÏ ×ËÌÀÞÉÔØ Ó ÐÏÍÏÝØÀ ÏÐÃÉÉ O_NONBLOCK É ËÏÍÁÎÄÙ F_SETFL × ÆÕÎËÃÉÉ fcntl(2)).
MSG_NOSIGNAL
ôÒÅÂÕÅÔ ÎÅ ÐÏÓÙÌÁÔØ ÓÉÇÎÁÌ SIGPIPE ËÏÇÄÁ ÐÒÉ ÒÁÂÏÔÅ Ó ÐÏÔÏËÏ-ÏÒÉÅÎÔÉÒÏ×ÁÎÎÙÍ ÓÏËÅÔÏÍ ÄÒÕÇÁÑ ÓÔÏÒÏÎÁ ÏÂÒÙ×ÁÅÔ ÓÏÅÄÉÎÅÎÉÅ. ëÏÄ ÏÛÉÂËÉ EPIPE ×ÏÚ×ÒÁÝÁÅÔÓÑ × ÌÀÂÏÍ ÓÌÕÞÁÅ.
MSG_CONFIRM(ÔÏÌØËÏ Linux 2.3 É ×ÙÛÅ)
óÏÏÂÝÉÔØ ÕÒÏ×ÎÀ ÓÏÅÄÉÎÅÎÉÑ, ÞÔÏ ×Ù ÕÓÐÅÛÎÏ ÐÏÌÕÞÉÌÉ ÏÔ×ÅÔ ÏÔ ÄÒÕÇÏÊ ÓÔÏÒÏÎÙ. õÒÏ×ÅÎØ ÓÏÅÄÉÎÅÎÉÑ ÒÅÇÕÌÑÒÎÏ ÐÙÔÁÅÔÓÑ ÏÂÒÁÔÉÔØÓÑ Ë ÓÏÓÅÄÕ (ÎÁÐÒÉÍÅÒ, Ó ÐÏÍÏÝØÀ unicast ARP), ÄÏ ÔÅÈ ÐÏÒ ÐÏËÁ ÎÅ ÐÏÌÕÞÉÔ ÔÁËÏÅ ÓÏÏÂÝÅÎÉÅ. üÔÕ ×ÏÚÍÏÖÎÏÓÔØ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÎÁ ÓÏËÅÔÁÈ ÔÉÐÁ SOCK_DGRAM É SOCK_RAW. ÷ ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÜÔÁ ×ÏÚÍÏÖÎÏÓÔØ ÒÅÁÌÉÚÏ×ÁÎÁ ÔÏÌØËÏ ÄÌÑ IPv4 É IPv6. óÍ. arp(7), ÇÄÅ ÏÐÉÓÁÎÙ ÄÅÔÁÌÉ.

ïÐÒÅÄÅÌÅÎÉÅ ÓÔÒÕËÔÕÒÙ msghdr ÉÚÌÏÖÅÎÏ ÎÉÖÅ. óÍ. ÎÉÖÅ, Á ÔÁËÖÅ × recv(2), ÇÄÅ ÏÐÉÓÁÎÏ ËÁÖÄÏÅ ÐÏÌÅ.




struct msghdr {

       void    * msg_name;     /* ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÄÒÅÓ */

       socklen_t       msg_namelen;    /* ÒÁÚÍÅÒ ÁÄÒÅÓÁ */

       struct iovec    * msg_iov;      /* ÍÁÓÓÉ× scatter/gather */

       size_t  msg_iovlen;     /* # ÜÌÅÍÅÎÔÙ × msg_iov */

       void    * msg_control;  /* ÓÌÕÖÅÂÎÙÅ ÄÁÎÎÙÅ, ÓÍ. ÎÉÖÅ */

       socklen_t       msg_controllen; /* ÒÁÚÍÅÒ ÂÕÆÅÒÁ ÓÌÕÖÅÂÎÙÈ ÄÁÎÎÙÈ */

       int     msg_flags;      /* ÆÌÁÇÉ ÎÁ ÐÒÉÎÑÔÏÍ ÓÏÏÂÝÅÎÉÉ */

};



õÐÒÁ×ÌÑÀÝÕÀ ÉÎÆÏÒÍÁÃÉÀ ÍÏÖÎÏ ÐÏÓÙÌÁÔØ Ó ÐÏÍÏÝØÀ ÞÌÅÎÏ× msg_control É msg_controllen. íÁËÓÉÍÁÌØÎÁÑ ÄÌÉÎÁ ÕÐÒÁ×ÌÑÀÝÅÇÏ ÂÕÆÅÒÁ, ËÏÔÏÒÕÀ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÑÄÒÏ, ÏÇÒÁÎÉÞÅÎÁ sysctl-ÚÎÁÞÅÎÉÅÍ net.core.optmem_max; ÓÍ. socket(7).

÷ïú÷òáýáåíïå úîáþåîéå

üÔÉ ÓÉÓÔÅÍÎÙÅ ×ÙÚÏ×Ù ×ÏÚ×ÒÁÝÁÀÔ ËÏÌÉÞÅÓÔ×Ï ÏÔÐÒÁ×ÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ× ÉÌÉ -1, ÅÓÌÉ ÐÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ.

ïûéâëé

åÓÔØ ÎÅÓËÏÌØËÏ ÓÔÁÎÄÁÒÔÎÙÈ ÏÛÉÂÏË, ÇÅÎÅÒÉÒÕÅÍÙÈ ÎÁ ÕÒÏ×ÎÅ ÓÏËÅÔÏ×. îÉÖÅÌÅÖÁÝÉÅ ÍÏÄÕÌÉ ÐÒÏÔÏËÏÌÏ× ÍÏÇÕÔ ÔÁËÖÅ ×ÏÚ×ÒÁÝÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ËÏÄÙ ÏÛÉÂÏË; ÓÍÏÔÒÉ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÓÔÒÁÎÉÃÙ ÒÕËÏ×ÏÄÓÔ×Á.
EBADF
õËÁÚÁÎ ÎÅ×ÅÒÎÙÊ ÄÅÓËÒÉÐÔÏÒ.
ENOTSOCK
áÒÇÕÍÅÎÔ s ÎÅ Ñ×ÌÑÅÔÓÑ ÓÏËÅÔÏÍ.
EFAULT
÷ ËÁÞÅÓÔ×Å ÐÁÒÁÍÅÔÒÁ ÐÅÒÅÄÁÎ ÎÅ×ÅÒÎÙÊ ÁÄÒÅÓ.
EMSGSIZE
óÏËÅÔ ÔÒÅÂÕÅÔ, ÞÔÏÂÙ ÓÏÏÂÝÅÎÉÅ ÂÙÌÏ ÏÔÏÓÌÁÎÏ ÚÁ ÏÄÎÕ ÏÐÅÒÁÃÉÀ (ÁÔÏÍÁÒÎÏ), Á ÒÁÚÍÅÒ ÓÏÏÂÝÅÎÉÑ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÜÔÏÇÏ.
EAGAIN ÉÌÉ EWOULDBLOCK
óÏËÅÔ ÐÏÍÅÞÅÎ ËÁË ÎÅÂÌÏËÉÒÕÀÝÉÊ, Á ÚÁÐÒÏÛÅÎÎÁÑ ÏÐÅÒÁÃÉÑ ÄÏÌÖÎÁ ÂÙÌÁ ÂÙ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÅÇÏ.
ENOBUFS
éÓÈÏÄÑÝÁÑ ÏÞÅÒÅÄØ ÓÅÔÅ×ÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ÚÁÐÏÌÎÅÎÁ. ïÂÙÞÎÏ ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÉÎÔÅÒÆÅÊÓ ÐÒÅËÒÁÔÉÌ ÏÔÐÒÁ×ËÕ, ÎÏ ÍÏÖÅÔ ÂÙÔØ ÔÁËÖÅ ×ÙÚ×ÁÎÏ ×ÒÅÍÅÎÎÏÊ ÐÅÒÅÇÒÕÚËÏÊ. (üÔÏÇÏ ÎÅ ÍÏÖÅÔ ÐÒÏÉÚÏÊÔÉ ÐÏÄ Linux, ÐÏÔÏÍÕ ÞÔÏ ÚÄÅÓØ ÐÁËÅÔÙ ÐÒÏÓÔÏ ÏÔÂÒÁÓÙ×ÁÀÔÓÑ, ËÏÇÄÁ ÏÞÅÒÅÄØ ÕÓÔÒÏÊÓÔ×Á ÐÅÒÅÐÏÌÎÑÅÔÓÑ.)
EINTR
ðÏÑ×ÉÌÓÑ ÓÉÇÎÁÌ.
ENOMEM
îÅ È×ÁÔÉÌÏ ÐÁÍÑÔÉ.
EINVAL
ðÅÒÅÄÁÎ ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ.
EPIPE
ìÏËÁÌØÎÙÊ ËÏÎÅà ÓÏËÅÔÁ, ÏÒÉÅÎÔÉÒÏ×ÁÎÎÏÇÏ ÎÁ ÓÏÅÄÉÎÅÎÉÅ, ÂÙÌ ÚÁËÒÙÔ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÐÒÏÃÅÓÓ ÔÁËÖÅ ÐÏÌÕÞÉÔ ÓÉÇÎÁÌ SIGPIPE, ÅÓÌÉ ÔÏÌØËÏ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ ÆÌÁÇ MSG_NOSIGNAL.

óïïô÷åôóô÷éå óôáîäáòôáí

4.4BSD, SVr4, POSIX 1003.1g draft (ÜÔÉ ÓÉÓÔÅÍÎÙÅ ×ÙÚÏ×Ù ÐÏÑ×ÉÌÉÓØ × 4.2BSD).

MSG_CONFIRM Ñ×ÌÑÅÔÓÑ Linux-ÓÐÅÃÉÆÉÞÎÙÍ ÒÁÓÛÉÒÅÎÉÅÍ.

úáíåþáîéå

÷ÙÛÅÐÒÉ×ÅÄÅÎÎÙÅ ÐÒÏÔÏÔÉÐÙ ÓÏÏÔ×ÅÔÓÔ×ÕÀÔ glibc2. óÔÁÎÄÁÒÔ SUS ÓÏÇÌÁÓÅÎ Ó ÎÉÍÉ, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÔÏÇÏ, ÞÔÏ ÔÁÍ ×ÏÚ×ÒÁÝÁÅÍÙÅ ÚÎÁÞÅÎÉÑ ÏÐÒÅÄÅÌÅÎÙ ËÁË ssize_t (ÔÏÇÄÁ ËÁË × BSD 4.x, libc4 É libc5 ÏÎÉ ÏÐÒÅÄÅÌÅÎÙ ËÁË int). áÒÇÕÍÅÎÔ flags Ñ×ÌÑÅÔÓÑ int × BSD 4.x, ÎÏ unsigned int × libc4 É libc5. áÒÇÕÍÅÎÔ len Ñ×ÌÑÅÔÓÑ int × BSD 4.x, ÎÏ size_t × libc4 É libc5. áÒÇÕÍÅÎÔ fromlen Ñ×ÌÑÅÔÓÑ int * × BSD 4.x, libc4 É libc5. ôÅËÕÝÅÅ ÏÐÒÅÄÅÌÅÎÉÅ, socklen_t, ÂÙÌÏ ÉÚÏÂÒÅÔÅÎÏ × POSIX (ÓÍ. ÔÁËÖÅ accept(2)).

óíïôòé ôáëöå

fcntl(2), recv(2), select(2), getsockopt(2), sendfile(2), socket(2), write(2), socket(7), ip(7), tcp(7), udp(7)

ðåòå÷ïä

Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 2000-2001