SEND

Section: Linux Programmer's Manual (2)
Updated: July 1999
Index
Return to Main Contents
 

À̸§

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 Àº ¼ÒÄÏÀÌ connected »óÅ¿¡ ÀÖÀ» ¶§ »ç¿ëµÈ´Ù. ¹Ý¸é sendto ¿Í sendmsg ¾ðÁ¦µç »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¸ñÇ¥ÀÇ ÁÖ¼Ò´Â to °¡ ±×°ÍÀÇ Å©±â¸¦ Á¤ÇÏ´Â tolen °ú ÇÔ²² ÁÖ¾îÁø´Ù. ¸Þ½ÃÁöÀÇ ±æÀÌ´Â len. À¸·Î ÁÖ¾îÁø´Ù. ¸Þ½ÃÁö°¡ ³Ê¹« ±æ¾î¼­ ±âÃÊÀûÀÎ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ ÀÚµ¿À¸·Î ³Ñ¾î°¥ ¼ö ¾ø´Ù¸é, ¿¡·¯ EMSGSIZE °¡ ¹ÝȯµÇ°í, ¸Þ½ÃÁö´Â ÀüÇØÁöÁö ¾Ê´Â´Ù.

send. ¿¡´Â Àü´ÞÀ» ½ÇÆÐÇÒ Â¡ÈÄ´Â ¾ø´Ù. ±¹ºÎÀûÀ¸·Î ÁöÀûµÇ´Â ¿¡·¯´Â -1ÀÇ ¹Ýȯ°ª¿¡ ÀÇÇØ ÁöÀûµÈ´Ù.

¸Þ½ÃÁö°¡ ¼ÒÄÏÀÇ send ¹öÆÛ¿¡ ¸ÂÁö ¾ÊÀ¸¸é, send ´Â ¼ÒÄÏÀÌ non-blocking I/O mode¿¡ ÀÖÁö ¾Ê´Â´Ù¸é ÀϹÝÀûÀ¸·Î ¸·´Â´Ù non-blocking mode¿¡¼­ ÀÌ·± °æ¿ì¿£, EAGAIN À» ¹ÝȯÇÑ´Ù. select(2) È£ÃâÀº ¾ðÁ¦ ´ÙÀ½ ÀڷḦ º¸³¾Áö¸¦ °áÁ¤Çϴµ¥ ¾²ÀδÙ.

flags ¸Å°³ º¯¼ö´Â flagwordÀÌ°í, ¾Æ·¡ flag¸¦ °¡Áú ¼ö ÀÖ´Ù:

MSG_OOB
out-of-band data¸¦ ÀÌ °³³äÀ» Áö¿øÇÏ´Â ¼ÒÄÏÀ¸·Î º¸³½´Ù (e.g. SOCK_STREAM); ±âÃÊ ÇÁ·ÎÅäÄÝÀº ¹Ýµå½Ã out-of-band data¸¦ Áö¿øÇÑ´Ù..
MSG_DONTROUTE
ÆÐŶÀ» Àü¼ÛÇϴµ¥ °ÔÀÌÆ®¿þÀ̸¦ »ç¿ëÇÏÁö ¾Ê°í, Á÷Á¢ ¿¬°áµÈ ³×Æ®¿÷À» ÅëÇؼ­ È£½ºÆ®·Î º¸³½´Ù. ÀÌ°ÍÀº diagnostic ȤÀº routing program¿¡ ÀÇÇؼ­¸¸ »ç¿ëµÈ´Ù. ÀÌ°ÍÀº ¿ÀÁ÷ ÇÁ·ÎÅäÄݱºÀ» À§Çؼ­¸¸ Á¤ÀǵȴÙ; ÆÐŶ ¼ÒÄÏÀº ÇÏÁö ¾Ê´Â´Ù.
MSG_DONTWAIT
non-blocking operationÀ» °¡´ÉÄÉ ÇÑ´Ù; operationÀÌ ¸·ÇûÀ» ¶§ EAGAIN °¡ ¹ÝȯµÈ´Ù. (ÀÌ°ÍÀº ¶ÇÇÑ O_NONBLOCK À» F_SETFL fcntl(2) ¿Í ÇÔ²² »ç¿ëÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.)
MSG_NOSIGNAL
´Ù¸¥ ÇÑÂÊ ³¡ÀÌ ¿¬°áÀ» ²÷¾úÀ» ¶§, ¼ÒÄÏÀ¸·ÎºÎÅÍ ºñ·ÔµÈ ½ºÆ®¸²»óÀÇ ¿¡·¯¿¡ SIGPIPE À» º¸³»Áö ¾Êµµ·Ï ¿ä±¸ÇÑ´Ù. EPIPE ¿¡·¯´Â ¿©ÀüÈ÷ ¹ÝȯµÈ´Ù.

msghdr ±¸Á¶¿¡ ´ëÇÑ ¼³¸íÀ» º¸·Á¸é recv(2) À» º¸¶ó. msg_control ¿Í msg_controllen ±¸¼º¿ä¼Ò¸¦ »ç¿ëÇÏ´Â Á¦¾î Á¤º¸¸¦ º¸³¾ ¼ö ÀÖ´Ù. Ä¿³ÎÀÌ Ã³¸®ÇÒ ¼ö ÀÖ´Â ÃÖ´ë Á¦¾î ¹öÆÛÀÇ ±æÀÌ´Â net.core.optmem_max sysctl¿¡ ÀÇÇØ ¼ÒÄÏ´ÜÀ§·Î Á¦ÇѵǾî ÀÖ´Ù. ; socket(7). À» º¸¶ó  

¹Ýȯ°ª

º¸³»Áø ¹®ÀÚÀÇ ¼ö¸¦ ¹ÝȯÇϰųª ¿¡·¯ ¹ß»ý½Ã -1À» ¹ÝȯÇÑ´Ù.  

¿¡·¯

ÀÌ°ÍÀº ¼ÒÄÏ ·¹À̾ ÀÇÇØ ¹ß»ýµÇ´Â ¸î¸î Ç¥ÁØÀûÀÎ ¿¡·¯´Ù. Ãß°¡ÀûÀÎ ¿¡·¯´Â ±âÃÊ ÇÁ·ÎÅäÄÝ ¸ðµâ·ÎºÎÅÍ ¹ß»ýµÇ°Å³ª ¹ÝȯµÈ´Ù; °¢°¢ÀÇ ¸Å´º¾óÀ» ÂüÁ¶Ç϶ó.
EBADF
½ÇÁ¦ÇÏÁö ¾Ê´Â descriptor°¡ ÁöÁ¤µÇ¾ú´Ù.
ENOTSOCK
µ¶¸³º¯¼ö s °¡ ¼ÒÄÏÀÌ ¾Æ´Ï´Ù.
EFAULT
½ÇÁ¦ÇÏÁö ¾Ê´Â »ç¿ëÀÚ °ø°£ ÁÖ¼Ò°¡ ¸Å°³º¯¼ö·Î ÁöÁ¤µÇ¾ú´Ù.
EMSGSIZE
¼ÒÄÏÀÌ ¸Þ½ÃÁö¸¦ ÀÚµ¿À¸·Î º¸³»ÁÙ °ÍÀ» ¿äûÇßÁö¸¸, º¸³»Áø ¸Þ½ÃÁöÀÇ Å©±â°¡ ÀÌ°ÍÀ» ºÒ°¡´ÉÇÏ°Ô ÇÏ¿´´Ù.
EAGAINȤÀº EWOULDBLOCK
¼ÒÄÏÀÌ non-blockingÀ» Ç¥½ÃÇÏ¿´°í, ¿ä±¸µÈ operationÀÌ ±úÁ³´Ù.
ENOBUFS
³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ Ãâ·Â Å¥°¡ °¡µæ á´Ù. ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î ÀÎÅÍÆäÀ̽º°¡ Àü¼ÛÀ» ¸ØÃß´Â °ÍÀ¸·Î ³ªÅ¸³­´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀº ¼ø°£ÀûÀÎ Á¤Ã¼·Î ÀÎÇÑ °ÍÀÌ´Ù. (ÀÌ°ÍÀº ¸®´ª½º¿¡¼­´Â ÀϾ ¼ö ¾ø´Ù. ÀåÄ¡ Å¥°¡ ³ÑÄ¥ ¶§ ÆÐŶÀº Á¶¿ëÈ÷ ÁߴܵȴÙ.)
EINTR
½ÅÈ£°¡ ¹ß»ýÇß´Ù.
ENOMEM
»ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®°¡ ¾ø´Ù.
EINVAL
½ÇÁ¦ »ç¿ëµÇÁö ¾Ê´Â µ¶¸³º¯¼ö°¡ Åë°úÇß´Ù.
EPIPE
¼ÒÄÏÀ¸·ÎºÎÅÍÀÇ ¿¬°á¿¡¼­ ·ÎÄà ¾Øµå°¡ ²¨Á³´Ù. MSG_NOSIGNAL ÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì, ÇÁ·Î¼¼½º ¿ª½Ã SIGPIPE ¸¦ ¹Þ´Â´Ù.
 

ȣȯ

4.4BSD, SVr4, POSIX 1003.1g draft (ÀÌ ÇÔ¼ö´Â 4.2BSD¿¡ ÀÖ´Ù).  

ÁÖÀÇ

À§¿¡¼­ ÁÖ¾îÁø ÃʱâÄ¡´Â Single Unix SpecificationÀ» µû¸¥´Ù, glibc2¿Í ¸¶Âù°¡ÁöÀÌ´Ù: flags µ¶¸³º¯¼ö´Â BSD 4.*¿¡¼­ `int'ÀÌ´Ù. ÇÏÁö¸¸, libc4¿Í libc5¿¡¼± `unsigned int'ÀÌ´Ù; len µ¶¸³º¯¼ö´Â BSD 4.*°ú libc4¿¡¼­ `int'ÀÌ´Ù. ÇÏÁö¸¸ libc5¿¡¼± `size_t'ÀÌ´Ù; tolen µ¶¸³º¯¼ö´Â BSD 4.*°ú libc4, libc5¿¡¼­ `int'ÀÌ´Ù. accept(2). µµ ÂüÁ¶Ç϶ó.  

°ü·Ã Ç׸ñ

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

¿ªÀÚ

ASPLINUX<man@asp-linux.co.kr>, 2000³â 8¿ù 1ÀÏ


 

Index

À̸§
»ç¿ë¹ý
¼³¸í
¹Ýȯ°ª
¿¡·¯
ȣȯ
ÁÖÀÇ
°ü·Ã Ç׸ñ
¿ªÀÚ

This document was created by man2html, using the manual pages.
Time: 08:07:00 GMT, March 25, 2004