1 .\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California.
2 .\" All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\" must display the following acknowledgement:
14 .\" This product includes software developed by the University of
15 .\" California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\" may be used to endorse or promote products derived from this software
18 .\" without specific prior written permission.
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" $Id: recv.2,v 1.8 2001/08/15 18:00:48 hanataka Exp $
34 .\" Modified Sat Jul 24 00:22:20 1993 by Rik Faith <faith@cs.unc.edu>
35 .\" Modified Tue Oct 22 17:45:19 1996 by Eric S. Raymond <esr@thyrsus.com>
36 .\" Modified 1998,1999 by Andi Kleen
37 .\" 2001-06-19 corrected SO_EE_OFFENDER, bug report by James Hawtin
39 .\" Japanese Version Copyright (c) 1996 Akira Yoshiyama
40 .\" all rights reserved.
41 .\" Translated 1996-07-18, Akira Yoshiyama <yosshy@jedi.seg.kobe-u.ac.jp>
42 .\" Modified 1997-12-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
43 .\" Modified 1999-08-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
44 .\" Updated & Modified 2000-10-12, HAYAKAWA Hitoshi <cz8cb01@linux.or.jp>
45 .\" and NAKANO Takeo <nakano@apm.seikei.ac.jp>
46 .\" Updated & Modified 2001-02-09, NAKANO Takeo
47 .\" Updated 2003-10-11, Kentaro Shirakata <argrath@ub32.org>
48 .\" Updated 2005-03-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
49 .\" Updated 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29
50 .\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66
51 .\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05
52 .\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20
54 .\"WORD: ancillary data Êä½õ¥Ç¡¼¥¿
55 .\"WORD: ancillary message Êä½õ¥á¥Ã¥»¡¼¥¸
56 .\"WORD: invalid ÉÔÀµ¤Ê
58 .TH RECV 2 2008-12-03 "Linux" "Linux Programmer's Manual"
60 recv, recvfrom, recvmsg \- ¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë
62 .\" .B #include <sys/uio.h>
65 .B #include <sys/types.h>
67 .B #include <sys/socket.h>
69 .BI "ssize_t recv(int " sockfd ", void *" buf ", size_t " len ", int " flags );
71 .BI "ssize_t recvfrom(int " sockfd ", void *" buf ", size_t " len ", int " flags ,
72 .BI " struct sockaddr *" src_addr ", socklen_t *" addrlen );
74 .BI "ssize_t recvmsg(int " sockfd ", struct msghdr *" msg ", int " flags );
80 ¥³¡¼¥ë¤Ï¡¢¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤Î¤Ë»ÈÍѤ¹¤ë¡£
81 ¤Þ¤¿¥½¥±¥Ã¥È¤Î¥Ç¡¼¥¿¼õ¿®¤Ë¤â»È¤¦¤³¤È¤¬¤Ç¤¡¢
82 ¤³¤Î¤È¤¥½¥±¥Ã¥È¤ÏÀܳ»Ø¸þ (connection-oriened) ¤Ç¤¢¤Ã¤Æ¤â¤Ê¤¯¤Æ¤â¤è¤¤¡£
85 ¤¬ NULL °Ê³°¤Ç¡¢²¼ÁؤΥץí¥È¥³¥ë¤«¤éÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Ê¬¤«¤ë¾ì¹ç¡¢
87 ¤Ë¤Ï¤³¤ÎÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤ë¡£
91 ¤Ë¤Ï²¿¤âÆþ¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢
93 ¤Ï»ÈÍѤµ¤ì¤º¡¢¤³¤Î°ú¤¿ô¤Ï NULL ¤Ë¤·¤Æ¤ª¤¯¤Ù¤¤Ç¤¢¤ë¡£
94 .\" (Unix ¥É¥á¥¤¥ó¤È¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Î¤É¤Á¤é¤Î¥Ç¡¼¥¿¥°¥é¥à¥½¥±¥Ã¥È¤Ç¤â
96 .\" ¤ËÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤ë¡£¤Þ¤¿¡¢Unix ¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤â
97 .\" ƱÍͤÀ¤¬¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤Ï
99 .\" ¤Ë¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤Ê¤¤¡£)
100 .\" [¾åµ¤Î AF_UNIX ¤È AF_INET ¥½¥±¥Ã¥È¤Ë´Ø¤¹¤ëÃíµ¤Ï¥«¡¼¥Í¥ë 2.4.18 ¤Ç¤Î
101 .\" Æ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë¡£ (MTK, 22 Jul 02)]
104 ¤ÏÆþ½ÐÎÏξÍѤΰú¤¿ô¤Ç¤¢¤ë¡£¸Æ¤Ó½Ð¤·»þ¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤¬
106 ¤Ë³ä¤êÅö¤Æ¤¿¥Ð¥Ã¥Õ¥¡¤ÎÂ礤µ¤Ç½é´ü²½¤·¤Æ¤ª¤¯¤Ù¤¤Ç¤¢¤ë¡£
107 Ê֤äƤ¯¤ë»þ¤Ë¤Ï¡¢Á÷¿®¸µ¥¢¥É¥ì¥¹¤Î¼ÂºÝ¤ÎÂ礤µ¤ËÊѹ¹¤µ¤ì¤ë¡£
108 ÅϤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤¬¾®¤µ²á¤®¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÖ¤µ¤ì¤ë¥¢¥É¥ì¥¹¤ÎËöÈø¤Ï
109 ÀÚ¤êµÍ¤á¤é¤ì¤ë¡£¤³¤Î¾ì¹ç¤Ë¤Ï¡¢
111 ¤Ç¤Ï¡¢¸Æ¤Ó½Ð¤·»þ¤ËÅϤµ¤ì¤¿Ãͤè¤ê¤âÂ礤ÊÃͤ¬ÊÖ¤µ¤ì¤ë¡£
115 .I ÀܳºÑ¤ß¤Î (connected)
118 ¤ò»²¾È) ¤Ë¤Ä¤¤¤Æ¤Î¤ß»ÈÍѤµ¤ì¡¢
120 °ú¤¿ô¤Ë NULL ¤ò»ØÄꤷ¤¿
124 ¤³¤ì¤é¤Î»°¤Ä¤Î¥ë¡¼¥Á¥ó¤Ï¤¤¤º¤ì¤â¡¢À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤ÎŤµ¤òÊÖ¤¹¡£
125 ¥á¥Ã¥»¡¼¥¸¤¬Ä¹²á¤®¤Æ»ØÄꤵ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤ËÆþ¤êÀÚ¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
126 ¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤·¤¿¥½¥±¥Ã¥È¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¤Ï;ʬ¤Î¥Ð¥¤¥È¤¬¼Î¤Æ¤é¤ì¤ë
129 ¥½¥±¥Ã¥È¤Ë¼õ¤±¼è¤ë¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
130 ¼õ¿®ÍѤΥ³¡¼¥ë¤Ï¥á¥Ã¥»¡¼¥¸¤¬ÅþÃ夹¤ë¤Þ¤ÇÂԤġ£
131 ¤¿¤À¤·¡¢¥½¥±¥Ã¥È¤¬ÈóÄä»ß (nonblocking)
134 ¤ò»²¾È) ¤Ï \-1 ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô
141 ¤³¤ì¤é¤Î¼õ¿®ÍѤΥ³¡¼¥ë¤Ï¡¢¼õ¿®¤·¤¿¥Ç¡¼¥¿¤Î¥µ¥¤¥º¤¬Í׵ᤷ¤¿¥µ¥¤¥º¤Ë
142 㤹¤ë¤Þ¤ÇÂԤĤΤǤϤʤ¯¡¢²¿¤é¤«¤Î¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ë¤ÈÉüµ¢¤¹¤ë
143 (¼õ¿®¤µ¤ì¤ë¥Ç¡¼¥¿¤ÎºÇÂ祵¥¤¥º¤ÏÍ׵ᤷ¤¿¥µ¥¤¥º¤Ç¤¢¤ë)¡£
148 ¥³¡¼¥ë¤ò»È¤Ã¤Æ¡¢¼¡¤Î¥Ç¡¼¥¿¤¬¤¤¤ÄÆϤ¯¤«¤òȽÃǤǤ¤ë¡£
153 °ú¤¿ô¤Ë¤Ï¡¢°Ê²¼¤ÎÃͤò 1¤Ä°Ê¾å¡¢¥Ó¥Ã¥Èñ°Ì¤Î
155 ¤ò¼è¤Ã¤¿¤â¤Î¤ò»ØÄꤹ¤ë:
157 .BR MSG_CMSG_CLOEXEC " (" recvmsg "() ¤Î¤ß; Linux 2.6.23)"
161 Áàºî¤ò»È¤Ã¤Æ Unix ¥É¥á¥¤¥ó¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿·Ðͳ¤Ç¼õ¿®¤·¤¿
162 ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¤Ä¤¤¤Æ close-on-exec ¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
167 ¥Õ¥é¥°¤ÈƱ¤¸Íýͳ¤ÇÍÍѤǤ¢¤ë¡£
169 .BR MSG_DONTWAIT " (Linux 2.2 °Ê¹ß)"
170 ÈóÄä»ß (nonblocking) Áàºî¤ò͸ú¤Ë¤¹¤ë¡£
171 Áàºî¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê¾ì¹ç¤Ë¥¨¥é¡¼
181 ¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤â͸ú¤Ë¤Ç¤¤ë)¡£
183 .BR MSG_ERRQUEUE " (Linux 2.2 °Ê¹ß)"
184 ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢
185 ¥¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥¨¥é¡¼¤ò¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¥¥å¡¼¤«¤é¼è¤ê¤À¤»¤ë¤è¤¦¤Ë¤Ê¤ë¡£
186 ¤³¤Î¥¨¥é¡¼¤ÏÊä½õ¥á¥Ã¥»¡¼¥¸¤ËÁȤ߹þ¤Þ¤ì¤ÆÅϤµ¤ì¡¢
187 ¤³¤ÎÊä½õ¥á¥Ã¥»¡¼¥¸¤Î¼ïÊ̤ϥץí¥È¥³¥ë¤Ë°Í¸¤¹¤ë
190 ¥æ¡¼¥¶¤Ï½½Ê¬¤Ê¥µ¥¤¥º¤Î¥Ð¥Ã¥Õ¥¡¤òÍÑ°Õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
191 Êä½õ¥á¥Ã¥»¡¼¥¸¤Ë´Ø¤¹¤ë¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ï
196 ¥¨¥é¡¼¤Î¸¶°ø¤È¤Ê¤Ã¤¿¥ª¥ê¥¸¥Ê¥ë¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É¤Ï¡¢
198 ·Ðͳ¤ÇÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤ÆÅϤµ¤ì¤ë¡£
199 ¥¨¥é¡¼¤òµ¯¤³¤·¤¿¥Ç¡¼¥¿¥°¥é¥à¤Î¥ª¥ê¥¸¥Ê¥ë¤Î°¸À襢¥É¥ì¥¹¤Ï¡¢
203 ¥í¡¼¥«¥ë¤Ê¥¨¥é¡¼¤Î¾ì¹ç¤Ï¥¢¥É¥ì¥¹¤ÏÅϤµ¤ì¤Ê¤¤
208 ¥á¥ó¥Ð¡¼¤Ç¥Á¥§¥Ã¥¯¤Ç¤¤ë)¡£
214 ¥¨¥é¡¼¤¬ÅϤµ¤ì¤¿¸å¤Ë¤Ï¡¢¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¼¡¤Î¥¨¥é¡¼¤Ë´ð¤¤¤Æ¡¢
215 ½èÍýÂÔ¤Á¤Î¥½¥±¥Ã¥È¡¦¥¨¥é¡¼¤¬ºÆÀ¸À®¤µ¤ì¡¢¼¡¤Î¥½¥±¥Ã¥ÈÁàºî¤ÎºÝ¤ËÅϤµ¤ì¤ë¡£
224 #define SO_EE_ORIGIN_NONE 0
225 #define SO_EE_ORIGIN_LOCAL 1
226 #define SO_EE_ORIGIN_ICMP 2
227 #define SO_EE_ORIGIN_ICMP6 3
229 struct sock_extended_err
231 uint32_t ee_errno; /* error number */
232 uint8_t ee_origin; /* where the error originated */
233 uint8_t ee_type; /* type */
234 uint8_t ee_code; /* code */
235 uint8_t ee_pad; /* padding */
236 uint32_t ee_info; /* additional information */
237 uint32_t ee_data; /* other data */
238 /* More data may follow */
241 struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
246 ¤Ë¤Ï¥¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥¨¥é¡¼¤Î
250 ¤Ë¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì½ê¤Î¥ª¥ê¥¸¥ó¡¦¥³¡¼¥É (origin code) ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
251 ¾¤Î¥Õ¥£¡¼¥ë¥É¤Ï¥×¥í¥È¥³¥ë°Í¸¤Ç¤¢¤ë¡£
253 ¥Þ¥¯¥í¤Ï¡¢¤³¤ÎÊä½õŪ¤Ê¥á¥Ã¥»¡¼¥¸¤ò°ú¤¿ô¤Ë¼è¤Ã¤Æ¡¢
254 ¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Í¥Ã¥È¥ï¡¼¥¯¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
255 ¥¢¥É¥ì¥¹¤¬ÉÔÌÀ¤Î¾ì¹ç¤Ë¤Ï¡¢
263 ¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤ÏÉÔÄê¤Ç¤¢¤ë¡£
264 ¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É¤ÏÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤ÆÅϤµ¤ì¤ë¡£
266 ¥í¡¼¥«¥ë¤Ç¤Î¥¨¥é¡¼¤Î¾ì¹ç¤Ë¤Ï¥¢¥É¥ì¥¹¤ÏÅϤµ¤ì¤Ê¤¤ (¤³¤ì¤Ï
270 ¥á¥ó¥Ð¡¼¤Ç¥Á¥§¥Ã¥¯¤Ç¤¤ë)¡£
271 ¥¨¥é¡¼¤ò¼õ¤±¼è¤Ã¤¿¾ì¹ç¡¢
276 ¥¨¥é¡¼¤¬ÅϤµ¤ì¤¿¸å¤Ë¤Ï¡¢
277 ½èÍýÂÔ¤Á¤Ë¤Ê¤Ã¤Æ¤¤¤¿¥½¥±¥Ã¥È¡¦¥¨¥é¡¼¤¬¡¢¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë
278 ¼¡¤Î¥¨¥é¡¼¤Ë´ð¤Å¤¤¤ÆºÆÀ¸À®¤µ¤ì¡¢¼¡¤Î¥½¥±¥Ã¥ÈÁàºî¤ÎºÝ¤ËÅϤµ¤ì¤ë¡£
281 ¤³¤Î¥Õ¥é¥°¤Ï¡¢Ä̾ï¤Î¥Ç¡¼¥¿¡¦¥¹¥È¥ê¡¼¥à¤Ç¤Ï¼õ¿®¤Ç¤¤Ê¤¤
282 ÂÓ°è³° (out-of-band) ¥Ç¡¼¥¿¤Î¼õ¿®¤òÍ׵᤹¤ë¡£
283 ¥×¥í¥È¥³¥ë¤Ë¤è¤Ã¤Æ¤Ï¡¢
284 Ä̾ï¤Î¥Ç¡¼¥¿¡¦¥¥å¡¼¤ÎÀèƬ¤Ë®ã¥Ç¡¼¥¿¤òÃÖ¤¯¤â¤Î¤¬¤¢¤ë¤¬¡¢
285 ¤½¤Î¤è¤¦¤Ê¥×¥í¥È¥³¥ë¤Ç¤Ï¤³¤Î¥Õ¥é¥°¤Ï»ÈÍѤǤ¤Ê¤¤¡£
288 ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢
289 ¼õ¿®¥¥å¡¼¤ÎºÇ½é¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤È¤¡¢¥¥å¡¼¤«¤é¥Ç¡¼¥¿¤òºï½ü¤·¤Ê¤¤¡£
290 ¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¸å¤Ç¤â¤¦°ìÅÙ¼õ¿®¥³¡¼¥ë¤ò¸Æ¤Ó½Ð¤¹¤È¡¢Æ±¤¸¥Ç¡¼¥¿¤¬Ê֤뤳¤È¤Ë¤Ê¤ë¡£
292 .BR MSG_TRUNC " (Linux 2.2 °Ê¹ß)"
295 Internet datagram ¥½¥±¥Ã¥È (Linux 2.4.27/2.6.8 °Ê¹ß)¡¢
296 netlink (Linux 2.6.22 °Ê¹ß) ¥½¥±¥Ã¥È¤Î¾ì¹ç¡¢
297 ¥Ñ¥±¥Ã¥È¤ä¥Ç¡¼¥¿¥°¥é¥à¤ÎŤµ¤¬ÅϤ·¤¿¥Ð¥Ã¥Õ¥¡¤è¤ê¤âŤ«¤Ã¤¿¾ì¹ç¤Ë¤â¡¢
298 ¥Ñ¥±¥Ã¥È¤ä¥Ç¡¼¥¿¥°¥é¥à¤Î¼ÂºÝ¤ÎŤµ¤òÊÖ¤¹¡£
299 Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È
301 ¥½¥±¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
303 Internet ¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤ÎÍøÍѤˤĤ¤¤Æ¤Ï
307 .BR MSG_WAITALL " (Linux 2.2 °Ê¹ß)"
308 ¤³¤Î¥Õ¥é¥°¤Ï¡¢Í׵ᤷ¤¿Î̤¤¤Ã¤Ñ¤¤¤Î¥Ç¡¼¥¿¤¬ÅþÃ夹¤ë¤Þ¤Ç¡¢
309 Áàºî¤òÄä»ß (block) ¤¹¤ë¤è¤¦Í׵᤹¤ë¡£
310 ⤷¡¢¥·¥°¥Ê¥ë¤ò¼õ¿®¤·¤¿¤ê¡¢¥¨¥é¡¼¤äÀÚÃÇ (disconnect) ¤¬È¯À¸¤·¤¿¤ê¡¢
311 ¼¡¤Ë¼õ¿®¤µ¤ì¤ë¥Ç¡¼¥¿¤¬°Û¤Ê¤ë·¿¤À¤Ã¤¿¤ê¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
312 Í׵ᤷ¤¿Î̤è¤ê¥Ç¡¼¥¿¤¬¾¯¤Ê¤¯¤Æ¤âÊ֤뤳¤È¤¬¤¢¤ë¡£
315 ¥³¡¼¥ë¤Ï¡¢Ä¾ÀÜÅϤ¹°ú¤¿ô¤Î¿ô¤ò¸º¤é¤¹¤¿¤á¤Ë
317 ¹½Â¤ÂΤò»ÈÍѤ¹¤ë¡£¤³¤Î¹½Â¤ÂΤÏ
319 ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
323 struct iovec { /* Scatter/gather array items */
324 void *iov_base; /* Starting address */
325 size_t iov_len; /* Number of bytes to transfer */
329 void *msg_name; /* optional address */
330 socklen_t msg_namelen; /* size of address */
331 struct iovec *msg_iov; /* scatter/gather array */
332 size_t msg_iovlen; /* # elements in msg_iov */
333 void *msg_control; /* ancillary data, see below */
334 socklen_t msg_controllen; /* ancillary data buffer len */
335 int msg_flags; /* flags on received message */
343 ¤Ï¡¢¥½¥±¥Ã¥È¤¬Àܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ËÁ÷¿®¸µ¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¡£
344 ̾Á°¤¬É¬Íפʤ¤¾ì¹ç¤Ë¤Ï
346 ¤Ë NULL ¥Ý¥¤¥ó¥¿¤ò»ØÄꤹ¤ë¡£
352 ¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Êʬ²ò/·ë¹çÍѤΥ٥¯¥È¥ë (scatter-gather locations)
357 ¤ÎŤµ¤ò»ý¤Á¡¢Â¾¤Î¥×¥í¥È¥³¥ëÀ©¸æ¥á¥Ã¥»¡¼¥¸¤ä
358 ¼ï¡¹¤ÎÊä½õ¥Ç¡¼¥¿¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
364 ¤Î¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤òÆþ¤ì¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£
365 ¥³¡¼¥ë¤¬À®¸ù¤·¤ÆÊ֤俾ì¹ç¡¢À©¸æ¥á¥Ã¥»¡¼¥¸Îó¤ÎŤµ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
367 ¥á¥Ã¥»¡¼¥¸¤Î·Á¼°¤Ï°Ê²¼¤ÎÄ̤ê:
372 socklen_t cmsg_len; /* data byte count, including hdr */
373 int cmsg_level; /* originating protocol */
374 int cmsg_type; /* protocol-specific type */
376 unsigned char cmsg_data[]; */
383 ¤ËÄêµÁ¤µ¤ì¤¿¥Þ¥¯¥í·Ðͳ¤Ç¤Î¤ß¥¢¥¯¥»¥¹¤¹¤Ù¤¤Ç¤¢¤ë¡£
385 Îã¤ò¤¢¤²¤ë¤È¡¢ Linux ¤Ï¤³¤ÎÊä½õ¥Ç¡¼¥¿¤Î¥á¥«¥Ë¥º¥à¤ò¡¢
386 Unix ¥½¥±¥Ã¥È¾å¤Ç¤Î³ÈÄ¥¥¨¥é¡¼¤ä IP ¥ª¥×¥·¥ç¥ó¡¢
387 ¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¼õ¤±ÅϤ·¤ËÍøÍѤ·¤Æ¤¤¤ë¡£
393 ¤«¤é¤Î¥ê¥¿¡¼¥ó»þ¤ËÀßÄꤵ¤ì¤ë¡£¤³¤³¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥Õ¥é¥°¤¬Æþ¤ë¡£
396 ¤³¤ì¤Ï¥ì¥³¡¼¥É¤Î½ª¤ê (end-of-record) ¤ò¼¨¤·¡¢
397 ÊÖ¤µ¤ì¤¿¥Ç¡¼¥¿¤¬´°Á´¤Ê¥ì¥³¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹ (°ìÈÌŪ¤Ë¤Ï
399 ·¿¤Î¥½¥±¥Ã¥È¤Ç»ÈÍѤµ¤ì¤ë)¡£
402 ¥Ç¡¼¥¿¥°¥é¥à¤¬Í¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¤è¤êÂ礤«¤Ã¤¿¤¿¤á¤Ë¡¢
403 ¥Ç¡¼¥¿¥°¥é¥à¤Î¤Ï¤ß½Ð¤·¤¿Éôʬ¤¬¼Î¤Æ¤é¤ì¤¿¤³¤È¤ò¼¨¤¹¡£
406 Êä½õ¥Ç¡¼¥¿¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤¬ÉÔ¤·¤¿¤¿¤á¤Ë¡¢
407 À©¸æ¥Ç¡¼¥¿¤Î°ìÉô¤¬¼Î¤Æ¤é¤ì¤¿¤³¤È¤ò¼¨¤¹¡£
410 ®ã¥Ç¡¼¥¿¤äÂÓ°è³°¥Ç¡¼¥¿¤ò¼õ¿®¤·¤¿¤³¤È¤ò¼¨¤¹¡£
413 ¥Ç¡¼¥¿¤Ï¼õ¿®¤·¤Ê¤«¤Ã¤¿¤¬
414 ¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¡¦¥¥å¡¼¤«¤é³ÈÄ¥¥¨¥é¡¼¤ò¼õ¿®¤·¤¿¤³¤È¤ò¼¨¤¹¡£
416 ¤³¤ì¤é¤Î¥³¡¼¥ë¤Ï¼õ¿®¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
417 ¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤òÊÖ¤¹¡£
418 ÀܳÀ褬Àµ¤·¤¯¥·¥ã¥Ã¥È¥À¥¦¥ó¤ò¼Â¹Ô¤·¤¿¾ì¹ç¤Ï¡¢ÊÖ¤êÃÍ¤Ï 0 ¤È¤Ê¤ë¡£
420 ¤³¤ì¤é¤Ï¥½¥±¥Ã¥ÈÁؤÇȯÀ¸¤¹¤ë°ìÈÌŪ¤Ê¥¨¥é¡¼¤Ç¤¢¤ë¡£
421 ¾¤Î¥¨¥é¡¼¤¬²¼ÁؤΥץí¥È¥³¥ë¡¦¥â¥¸¥å¡¼¥ë¤ÇÀ¸À®¤µ¤ì¡¢
422 ÊÖ¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
423 ¤½¤ì¤é¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤¹¤ë¤³¤È¡£
425 .BR EAGAIN " ¤Þ¤¿¤Ï " EWOULDBLOCK
426 .\" Actually EAGAIN on Linux
427 ¥½¥±¥Ã¥È¤¬ÈóÄä»ß (nonblocking) ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Æ
428 ¼õ¿®Áàºî¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê¾õ¶·¤Ë¤Ê¤Ã¤¿¤«¡¢
429 ¼õ¿®¤Ë»þ´ÖÀÚ¤ì (timeout) ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ
430 ¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ëÁ°¤Ë»þ´ÖÀÚ¤ì¤Ë¤Ê¤Ã¤¿¡£
431 POSIX.1-2001 ¤Ï¡¢¤³¤Î¾ì¹ç¤Ë¤É¤Á¤é¤Î¥¨¥é¡¼¤òÊÖ¤¹¤³¤È¤âǧ¤á¤Æ¤ª¤ê¡¢
432 ¤³¤ì¤é 2 ¤Ä¤ÎÄê¿ô¤¬Æ±¤¸Ãͤò»ý¤Ä¤³¤È¤âµá¤á¤Æ¤¤¤Ê¤¤¡£
433 ¤·¤¿¤¬¤Ã¤Æ¡¢°Ü¿¢À¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢Î¾Êý¤Î²ÄǽÀ¤ò
439 ¤¬ÉÔÀµ¤Ê¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¢¤ë¡£
442 ¥ê¥â¡¼¥È¤Î¥Û¥¹¥È¤Ç¥Í¥Ã¥È¥ï¡¼¥¯Àܳ¤¬µñÈݤµ¤ì¤¿
443 (¤è¤¯¤¢¤ëÍýͳ¤È¤·¤Æ¤Ï¡¢Í׵ᤷ¤¿¥µ¡¼¥Ó¥¹¤¬µ¯Æ°¤µ¤ì¤Æ¤¤¤Ê¤¤¤Ê¤É¤¬¤¢¤ë)¡£
446 ¼õ¿®¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
449 ¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ëÁ°¤Ë¡¢¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¡£
454 ÉÔÀµ¤Ê°ú¤¿ô¤¬ÅϤµ¤ì¤¿¡£
455 .\" e.g., msg_namelen < 0 for recvmsg() or addrlen < 0 for recvfrom()
459 ¤Î¤¿¤á¤Î¥á¥â¥ê¤¬³ÎÊݤǤ¤Ê¤«¤Ã¤¿¡£
462 ¥½¥±¥Ã¥È¤ËÀܳ»Ø¸þ¥×¥í¥È¥³¥ë¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢
472 ¤¬¥½¥±¥Ã¥È¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤¡£
474 4.4BSD (¤³¤ì¤é¤Î´Ø¿ô¤Ï 4.2BSD ¤Ç¸½¤ï¤ì¤¿), POSIX.1-2001¡£
480 ¥Õ¥é¥°¤À¤±¤¬µºÜ¤µ¤ì¤Æ¤¤¤ë¡£
482 ¾åµ¤Î¥×¥í¥È¥¿¥¤¥×¤Ï glibc2 ¤Ë¤·¤¿¤¬¤Ã¤Æ¤¤¤ë¡£
483 Single Unix Specification ¤Ç¤âƱÍͤÀ¤¬¡¢
484 ÊÖ¤êÃͤη¿¤¬ \fIssize_t\fP ¤È¤Ê¤Ã¤Æ¤¤¤ë
485 (°ìÊý¤Ç 4.x BSD ¤ä libc4 ¤ä libc5 ¤ÏÁ´¤Æ \fIint\fP ¤ò»ÈÍѤ·¤Æ¤¤¤ë)¡£
487 °ú¤¿ô¤Ï 4.x BSD ¤Ç¤Ï \fIint\fP ¤À¤¬¡¢libc4 ¤È libc5 ¤Ç¤Ï \fIunsigned int\fP ¤Ç¤¢¤ë¡£
489 °ú¤¿ô¤Ï 4.x BSD ¤Ç¤Ï \fIint\fP ¤À¤¬¡¢ libc4 ¤È libc5 ¤Ç¤Ï \fIsize_t\fP ¤Ç¤¢¤ë¡£
491 °ú¤¿ô¤Ï 4.x BSD, libc4, libc5 ¤Ç¤Ï \fIint\ *\fP ¤Ç¤¢¤ë¡£
492 ¸½ºß¤Î \fIsocklen_t\ *\fP ¤Ï POSIX ¤Çȯ°Æ¤µ¤ì¤¿¡£
496 POSIX.1-2001 ¤Ç¤Ï¡¢¹½Â¤ÂÎ
502 ·¿¤Ç¤¢¤ë¤Ù¤¤À¤È¤µ¤ì¤Æ¤¤¤ë¤¬¡¢
503 ¸½ºß¤Î glibc (glibc 2.4) ¤Ç¤Ï
506 .\" glibc bug raised 12 Mar 2006
507 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
508 .\" The problem is an underlying kernel issue: the size of the
509 .\" __kernel_size_t type used to type this field varies
510 .\" across architectures, but socklen_t is always 32 bits.