SEND 2

中文man手册

SEND

NAME
æ¦è¿°
æè¿°
è¿åå¼
é误代ç
å¼å®¹äº
注æ
SEE ALSO
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
è·

NAME

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 é误,æ¶æ¯ä¹ä¸ä¼è¢«éåº.

卿°æ®ä¼ éè¿ç¨ä¸æäº§ççé误ä¸ä¼è¿åç» send. 妿åçæ¬å°é误,åè¿å-1.

å½è¦åéçæ¶æ¯é¿åº¦å¤§äºå¥æ¥åå½åå¯ç¨ç¼å²åºæ¶, send å°é»å¡,é¤éå¨å¥æ¥å- ä¸è®¾ç½®äºéé»å¡å¼è¾å¥è¾åºæ¨¡å¼. 对äºéé»å¡æ¨¡å¼,è¿ç§æåµä¸å°è¿å EAGAIN é误. The ç³»ç»è°ç¨ select(2) å¯ä»¥ç¨æ¥æ£æµä½æ¶å¯ä»¥åéæ´å¤çæ°æ®.

åæ° flags æ¯ä¸ä¸ªæ å¿å,å¯ä»¥åå«ä¸åæ å¿:
å¯¹äºæ¯æå¸¦å¤æ°æ®ç奿¥å,

MSG_OOB å°éåº out-of-band (带å¤)æ°æ®(æ¯å¦, SOCK_STREAM ç±»åç奿¥å); ä¸å±åè®®ä¹å¿é¡»æ¯æ. å¸¦å¤ æ°æ®.

MSG_DONTROUTE

å¨éåºåç»æ¶ä¸ä½¿ç¨ç½å³.åªæç´æ¥è¿æ¥å¨ç½ç»ä¸çä¸»æº æè½æ¥æ¶å°æ°æ®.è¿ä¸ªæ å¿é常ä»ç¨äºè¯æåè·¯ç±ç¨åº. å¯è·¯ç±çåè®®ææè½ä½¿ç¨è¿ä¸ªæ å¿;å奿¥åä¸å¯ä»¥.

MSG_DONTWAIT

使ç¨éé»å¡å¼æä½;妿æä½éè¦é»å¡,å°è¿å EAGAIN é误(ä¹å¯ä»¥ç¨ F_SETFL fcntl(2) 设置 O_NONBLOCK å®ç°è¿ä¸ªåè½.)

MSG_NOSIGNAL

彿µå¼å¥æ¥åçå¦ä¸ç«¯ä¸æè¿æ¥æ¶ä¸åé SIGPIPE ä¿¡å·,ä½ä»ç¶è¿å EPIPE é误.

MSG_CONFIRM (ä»ç¨äºLinux 2.3以ä¸çæ¬)

éç¥é¾è·¯å±åçäºè½¬åè¿ç¨:å¾å°äºå¦ä¸ç«¯çæååºç. 妿é¾è·¯å±æ²¡ææ¶å°éç¥,å®å°æç§å¸¸è§æ¢æµç½ç»ä¸çç¸é» 主æº(æ¯å¦éè¿åè´¹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;

/*æ¶æ¯æ°ç»*/

size_t

msg_iovlen;

/*msg_iovä¸çå素个æ°*/

void

* msg_control;

/*è¾å©ä¿¡æ¯,è§ä¸æ*/

socklen_t

msg_controllen;

/*è¾å©æ°æ®ç¼å²åºé¿åº¦*/

int

msg_flags;

/*æ¥æ¶æ¶æ¯æ å¿*/

};

å¯ä»¥ä½¿ç¨ msg_control å msg_controllen æååé任使§å¶ä¿¡æ¯.åæ ¸æè½å¤ççæå¤§æ§å¶æ¶æ¯ç¼å²åºé¿åº¦ç± net.core.optmem_max sysctl对æ¯ä¸ªå¥æ¥åè¿è¡éå®;åè§ socket(7).

è¿åå¼

æåæ¶è¿ååéçå符个æ°,å¦åè¿å-1.

é误代ç

å¶ä¸ä¸äºæ¯å¥æ¥åå±äº§ççæ åé误.å¶ä»çæ¯ä¸å±å议模å产çç;åè§ åèªçmanæå.

EBADF

æå®äºéæ³æè¿°ç¬¦.

ENOTSOCK

åæ° s 䏿¯ä¸ä¸ªå¥æ¥å.

EFAULT

åæ°æå®çç¨æ·å°å空é´éæ³.

EMSGSIZE

æ¶æ¯é¿åº¦è¶ç.

EAGAINæèEWOULDBLOCK

奿¥å设置为éé»å¡å¼,ä½æè¯·æ±çæä½éè¦é»å¡.

ENOBUFS

ç½ç»æ¥å£è¾åºéå已满.è¿éå¸¸è¡¨ææ¥å£å·²åæ¢åé,乿å¯è½æ¯ ææ¶æ§çæ¥æ¤(è¿ä¸ä¼åçå¨linuxä¸,å½è®¾å¤éåæº¢åºæ¶æ°æ®æ¥ åªæ¯è¢«ç®å丢å¼.

EINTR

æ¥æ¶å°ä¿¡å·.

ENOMEM

没æå¯ç¨åå.

EINVAL

ä¼ éçåæ°éæ³.

EPIPE

è¿æ¥å¥æ¥åçæ¬å°ç«¯å·²å³é.è¿ç§æåµä¸è¿ç¨è¿ä¼æ¥æ¶å° SIGPIPE ä¿¡å·,é¤éè®¾ç½®äº MSG_NOSIGNAL

å¼å®¹äº

4.4BSD,SVr4,POSIX1003.1gèæ¡(è¿äºç³»ç»è°ç¨é¦æ¬¡åºç°äº4.2BSD). MSG_CONFIRM æ¯Linuxæåçæ©å±.

注æ

ä¸é¢ç»åºç彿°ååéµå¾ªSingle Unix Specification, glibc2乿¯è¿ä¹åç; flags åæ°å¨BSD4.*䏿¯‘int’,ä½å¨libc4ålibc5䏿¯‘unsigned int’; åæ° len å¨BSD4.*ålibc4䏿¯‘int’,ä½å¨libc5䏿¯’size_t’; åæ° tolen å¨BSD4.*,libc4ålibc5ä¸é½æ¯‘int’. åè§ accept(2).

SEE ALSO

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

[䏿çç»´æ¤äºº]

byeyear <love_my_love@263.net >

[ä¸æçææ°æ´æ°]

2002.02.27

ãä¸å½linux论åmanæå页翻è¯è®¡åã:

http://cmpp.linuxforum.net

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh