Home :: International :: Manuals :: Howto :: FAQ :: Man Pages :: Email Login

 
 

 

GETSOCKOPT

Section: Linux Programmer's Manual (2)
Updated: 22 April 1996
Index Return to Main Contents
 

̾Á°

getsockopt, setsockopt - ¥½¥±¥Ã¥È¤Î¥ª¥×¥·¥ç¥ó¤ÎÀßÄê¤È¼èÆÀ¤ò¹Ô¤Ê¤¦  

½ñ¼°

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

int getsockopt(int s, int level, int optname, void *optval, int *optlen);

int setsockopt(int s, int level, int optname, const void *optval, int optlen);  

ÀâÌÀ

getsockopt ¤È setsockopt ¤Ï¥½¥±¥Ã¥È¤Ë´ØÏ¢¤¹¤ë options ¤òÁàºî¤¹¤ë¡£¥ª¥×¥·¥ç¥ó¤ÏÊ£¿ô¤Î¥×¥í¥È¥³¥ëÁØ(level)¤Ë¸ºß¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢ ¤³¤ì¤é¤Ï¾ï¤ËºÇ¾å°Ì¤Î socket ÁؤؤÈÀßÄꤵ¤ì¤ë¡£

¥½¥±¥Ã¥È¡¦¥ª¥×¥·¥ç¥ó¤òÁàºî¤¹¤ëºÝ¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¤ÎÁØ(level)¤È¥ª¥×¥·¥ç¥ó¤Î ̾Á°¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥½¥±¥Ã¥ÈÁؤǥª¥×¥·¥ç¥ó¤òÁàºî¤¹¤ë°Ù¤Ë¤Ï¡¢ level ¤ò SOL_SOCKET ¤Ë»ØÄꤹ¤ë¡£ ¾¤ÎÁ´¤Æ¤ÎÁؤǥª¥×¥·¥ç¥ó¤òÁàºî¤¹¤ë°Ù¤Ë¤Ï¡¢Í¿¤¨¤é¤ì¤¿¥ª¥×¥·¥ç¥ó¤Î À©¸æ¼çÂΤȤʤë¥×¥í¥È¥³¥ë¤Î¥×¥í¥È¥³¥ëÈÖ¹æ¤ò»ØÄꤹ¤ë¡£Î㤨¤Ð¡¢ ¥ª¥×¥·¥ç¥ó¤¬ TCP ¥×¥í¥È¥³¥ë¤Ç²ò¼á¤µ¤ì¤ë¤Ù¤­¤³¤È¤ò»Ø¼¨¤¹¤ë¤Ë¤Ï¡¢ level ¤Ë TCP ¤Î¥×¥í¥È¥³¥ëÈÖ¹æ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ getprotoent(3) ¤ò»²¾È¤¹¤ë¤³¤È¡£

optval ¤È optlen ¥Ñ¥é¥á¡¼¥¿¡¼¤Ï setsockopt ¤Ç»ÈÍѤ¹¤ë¥ª¥×¥·¥ç¥ó¤ÎÃͤȤ·¤Æ»ÈÍѤ¹¤ë¡£ getsockopt ¤Ç¤ÏÍ׵ᤷ¤¿¥ª¥×¥·¥ç¥ó¤ÎÃͤòÊÖ¤¹¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¡¼¤ò»ØÄꤹ¤ë¡£ getsockopt ¤Ç¤Ï optlen ¤ÏÃͤȷë²ÌξÍѤΥѥé¥á¡¼¥¿¡¼¤Ç¡¢ºÇ½é¤Ë optval ¤Î»Ø¤·¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¡¼¤Î¥µ¥¤¥º¤òÍ¿¤¨¡¢¼ÂºÝ¤ËÊÖ¤µ¤ì¤ëÃͤΥµ¥¤¥º¤Ë ½ñ¤­´¹¤¨¤é¤ì¤ë¡£¤â¤·¥ª¥×¥·¥ç¥óÃͤòÍ¿¤¨¤º¡¢ÊÖ¤µ¤ì¤â¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï optval ¤Ï NULL ¤Ç¤âÎɤ¤¡£

optname ¤ª¤è¤Ó»ØÄꤵ¤ì¤¿¥ª¥×¥·¥ç¥ó¤Ï²ò¼á¤µ¤ì¤º¤Ë¡¢Å¬Àڤʥץí¥È¥³¥ë¡¦¥â¥¸¥å¡¼¥ë¤Ë ÅϤµ¤ì¤Æ²ò¼á¤µ¤ì¤ë¡£¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë <sys/socket.h> ¤Ë¤Ï¸å½Ò¤Î¥½¥±¥Ã¥ÈÁؤΥª¥×¥·¥ç¥ó¤ÎÄêµÁ¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ ¾¤Î¥×¥í¥È¥³¥ëÁؤǤÏ̾Á°¤ä·Á¼°¤Ï°Û¤Ê¤ë¡£Âè4¾Ï¤ÎŬÀڤʥޥ˥奢¥ë¤ò »²¾È¤¹¤ë¤³¤È¡£

¤Û¤È¤ó¤É¤Î¥½¥±¥Ã¥ÈÁؤΥª¥×¥·¥ç¥ó¤Ï optval ¤Ë int ¥Ñ¥é¥á¡¼¥¿¡¼¤òÍøÍѤ¹¤ë¡£ setsockopt ¤Ç¡¢ÆóÃÍ(boolean)¥ª¥×¥·¥ç¥ó¤òÍ­¸ú(enable)¤Ë¤¹¤ë¤Ë¤Ï¥¼¥í°Ê³°¤ò»ØÄꤷ¡¢ ̵¸ú(disable)¤Ë¤¹¤ë¤Ë¤Ï¥¼¥í¤ò»ØÄꤹ¤ë¡£ SO_LINGER ¤Ï¥Ñ¥é¥á¡¼¥¿¡¼¤È¤·¤Æ <linux/socket.h> ¤ÇÄêµÁ¤µ¤ì¤¿ linger ¹½Â¤ÂÎ ¤ò»ÈÍѤ¹¤ë¡£¤³¤Î¹½Â¤ÂΤˤϤ³¤Î¥ª¥×¥·¥ç¥ó¤Î˾¤Î¤Þ¤·¤¤¾õÂÖ¤È ÃÙ±ä»þ´Ö(linger interval)(²¼µ­»²¾È)¤ò»ØÄꤹ¤ë¡£ SO_SNDTIMEO ¤È SO_RCVTIMEO ¤Ï <sys/time.h> ¤ËÄêµÁ¤µ¤ì¤¿ timeval ¹½Â¤ÂÎ ¤ò¥Ñ¥é¥á¡¼¥¿¡¼¤È¤·¤Æ»ÈÍѤ¹¤ë¡£

°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¥½¥±¥Ã¥ÈÁؤÇǧ¼±¤µ¤ì¤ë¡£ ÆÃ¤ËÃíµ­¤µ¤ì¤Æ¤Ê¤±¤ì¤Ð¡¢getsockopt ¤ÇÄ´¤Ù setsockopt ¤ÇÀßÄê¤Ç¤­¤ë¡£

SO_DEBUG
¥Ç¥Ð¥Ã¥°¾ðÊó¤Îµ­Ï¿¤òÍ­¸ú¤Ë¤¹¤ë
SO_REUSEADDR
¥í¡¼¥«¥ë¡¦¥¢¥É¥ì¥¹¤ÎºÆÍøÍѤò²Äǽ¤Ë¤¹¤ë
SO_KEEPALIVE
Àܳ¤òÀ¸¤­¤Æ¤¤¤ë(alive)¾õÂÖ¤ËÊݤÄ
SO_DONTROUTE
³°¸þ¤­¤ÎÄÌ¿®¤Î¥ë¡¼¥Æ¥£¥ó¥°¤Î±ª²ó¤òÍ­¸ú¤Ë¤¹¤ë
SO_LINGER
¥Ç¡¼¥¿¤¬Â¸ºß¤¹¤ë»þ¤Ë¥¯¥í¡¼¥º(close)¤òÃٱ䤵¤»¤ë
SO_BROADCAST
¥Ö¥í¡¼¥É¥­¥ã¥¹¥ÈÄÌ¿®¤òÁ÷¿®¤¹¤ëµö²Ä¤òÍ¿¤¨¤ë
SO_OOBINLINE
ÂÓ°è³°(out-of-band)¥Ç¡¼¥¿¤ÎÂÓ°èÆâ¤Ç¤Î¼õ¿®¤òÍ­¸ú¤Ë¤¹¤ë
SO_SNDBUF
Á÷¿®ÍѤΥХåե¡¡¼¡¦¥µ¥¤¥º¤òÀßÄꤹ¤ë
SO_RCVBUF
¼õ¿®ÍѤΥХåե¡¡¼¡¦¥µ¥¤¥º¤òÀßÄꤹ¤ë
SO_SNDLOWAT
Á÷¿®¤ÎºÇ¾®ÃͤòÀßÄꤹ¤ë
SO_RCVLOWAT
¼õ¿®¤ÎºÇ¾®ÃͤòÀßÄꤹ¤ë
SO_SNDTIMEO
Á÷¿®¤Î»þ´ÖÀÚ¤ì(timeout)Ãͤò¼èÆÀ¤¹¤ë (¼èÆÀ¤Î¤ß²Äǽ)
SO_RCVTIMEO
¼õ¿®¤Î»þ´ÖÀÚ¤ì(timeout)Ãͤò¼èÆÀ¤¹¤ë (¼èÆÀ¤Î¤ß²Äǽ)
SO_TYPE
¥½¥±¥Ã¥È¤Î·¿¤ò¼èÆÀ¤¹¤ë (¼èÆÀ¤Î¤ß²Äǽ)
SO_ERROR
¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¾õÂÖ¤ò¼è¤·¡¢¤½¤ì¤ò¥¯¥ê¥¢¤¹¤ë (¼èÆÀ¤Î¤ß²Äǽ)

SO_DEBUG ¤Ï²¼ÁؤΥץí¥È¥³¥ë¡¦¥â¥¸¥å¡¼¥ë¤Î¥Ç¥Ð¥Ã¥°¤âÍ­¸ú¤Ë¤¹¤ë¡£ SO_REUSEADDR ¤Ï bind(2) ¥³¡¼¥ë¤ÇÍ¿¤¨¤é¤ì¤¿Í­¸ú¤Ê¥¢¥É¥ì¥¹¤ò»ÈÍѤ¹¤ë¤¿¤á¤Îµ¬Â§¤¬ ¥í¡¼¥«¥ë¡¦¥¢¥É¥ì¥¹¤ÎºÆ»ÈÍѤòµö¤¹¤³¤È¤ò»Ø¼¨¤¹¤ë¡£ SO_KEEPALIVE ¤ÏÀܳ¤µ¤ì¤¿¥½¥±¥Ã¥È¤ËÄê´üŪ¤Ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤è¤¦¤Ë¤¹¤ë¡£ ÀܳÁê¼ê¤¬¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ø¤Î±þÅú¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¡¢ Àܳ¤¬Àڤ줿¤È¤ß¤Ê¤µ¤ì¡¢¥½¥±¥Ã¥È¤ò»ÈÍѤ·¤Æ¤¤¤ë¥×¥í¥»¥¹¤¬ ¥Ç¡¼¥¿¤òÁ÷¿®¤·¤è¤¦¤È»î¤ß¤¿»þ¤Ë SIGPIPE ¥·¥°¥Ê¥ë¤ÇÄÌÃΤµ¤ì¤ë¡£ SO_DONTROUTE ¤Ï³°¸þ¤­¤ÎÄÌ¿®¤¬É¸½à¤Î¥ë¡¼¥Æ¥£¥ó¥°µ¡Ç½¤ò±ª²ó¤¹¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£ Âå¤ê¤Ë¡¢ÄÌ¿®¤ÏÌÜŪ¥¢¥É¥ì¥¹¤Î¥Í¥Ã¥È¥ï¡¼¥¯Éôʬ¤ò»²¾È¤·¤ÆÅ¬ÀÚ¤Ê ¥Í¥Ã¥È¥ï¡¼¥¯¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ø¤ÈľÀÜÁ÷¤é¤ì¤ë¡£

SO_LINGER ¤Ï̤ÇÛÁ÷¤Î¥á¥Ã¥»¡¼¥¸¤¬¥½¥±¥Ã¥È¾å¤Î¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¾õÂÖ¤Ç close(2) ¤¬¼Â¹Ô¤µ¤ì¤¿¾ì¹ç¤Ë¤È¤é¤ì¤ë¹Ôư¤òÀ©¸æ¤¹¤ë¡£ ¥½¥±¥Ã¥È¤¬¥Ç¡¼¥¿¤Î³Î¼Â¤ÊžÁ÷¤òÊݾڤ·¤Æ¤¤¤Æ¡¢ SO_LINGER ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥·¥¹¥Æ¥à¤Ï¥Ç¡¼¥¿¤ÎžÁ÷¤¬²Äǽ¤Ë¤Ê¤ë¤«¡¢ ¾ðÊó¤ÎžÁ÷¤¬ÉÔ²Äǽ¤Ç¤¢¤ë¤È·èÄꤵ¤ì¤ë¤Þ¤Ç¡¢¥·¥¹¥Æ¥à¤Ï close ¤Î½èÍý¤òÄä»ß(block)¤¹¤ë¡£(»þ´ÖÀÚ¤ì(time out)´ü´Ö¤Ï SO_LINGER ¤òÍ׵ᤷ¤¿»þ¤Ë setsockopt ¥³¡¼¥ë¤Ç»ØÄꤷ¤¿ÃÙ±ä»þ´Ö(linger     interval)¤È¤Ê¤ë¡£)
SO_LINGER ¤¬Ìµ¸ú¤Ç close ¤¬¼Â¹Ô¤µ¤ì¤¿¾ì¹ç¡¢¥·¥¹¥Æ¥à¤Ï¤¹¤°¤Ë close ½èÍý¤ò¹Ô¤Ê¤¤ ¤Ç¤­¤ë¤À¤±Á᤯½èÍý¤ò·Ñ³¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£

linger ¹½Â¤ÂÎ¤Ï <linux/socket.h> ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:


struct linger {
        int  l_onoff;   /* Linger active */
        int  l_linger;  /* How long to linger for */
};

l_onoff ¤ÏÃÙ±ä¤ò¹Ô¤Ê¤¦¤«¤É¤¦¤«¤ò»Ø¼¨¤¹¤ë¡£¤³¤ì¤ò 1 ¤ËÀßÄꤹ¤ë¤È l_linger ¤Ë¥×¥í¥»¥¹¤¬ close ¤ò¹Ô¤Ê¤¦¤Þ¤Ç¤Ë¤É¤ì¤À¤±¤Î»þ´Ö¤òÂԤĤ«¤¬É´Ê¬¤Î°ìÉÃñ°Ì¤Ç ´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¤ß¤Ê¤¹¡£ l_onoff ¤Ë¥¼¥í¤òÀßÄꤷ¤¿¾ì¹ç¡¢¥×¥í¥»¥¹¤Ï¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤«¤é¤¹¤°¤ËÊ֤äƤ¯¤ë¡£

SO_BROADCAST ¥ª¥×¥·¥ç¥ó¤Ï¥½¥±¥Ã¥È¤Ë¥Ç¡¼¥¿¥°¥é¥à¤ò¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤¹¤ë¤³¤È¤ò µö²Ä¤¹¤ë¡£ ¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤Ï½é´ü¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¥·¥¹¥Æ¥à¤Ç¤ÏÆÃ¸¢Áàºî¤À¤Ã¤¿¡£ ÂÓ°è³°¥Ç¡¼¥¿¤ò¥µ¥Ý¡¼¥È¤·¤¿¥×¥í¥È¥³¥ë¤Ç¡¢ SO_OOBINLINE ¥ª¥×¥·¥ç¥ó¤ÏÂÓ°è³°¥Ç¡¼¥¿¤òÄ̾ï¤ÎÆþÎÏ¥­¥å¡¼¤Ë¼õ¿®¥Ç¡¼¥¿¤È¤·¤ÆÃÖ¤¯ ¤³¤È¤òÍ׵᤹¤ë; ¤³¤ì¤Ï MSG_OOB ¥Õ¥é¥°¤ò»ÈÍѤ·¤Ê¤¯¤Æ¤â¤â¡¢ recv ¤ä read ¤Ç¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤¤¤¯¤Ä¤«¤Î¥×¥í¥È¥³¥ë¤Ï¾ï¤Ë ¤³¤Î¥ª¥×¥·¥ç¥ó¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤«¤Î¤è¤¦¤Ëºîư¤¹¤ë¡£

SO_SNDBUF ¤È SO_RCVBUF ¤Ï¤½¤ì¤¾¤ìÁ÷¿®¡¢¼õ¿®¥Ð¥Ã¥Õ¥¡¡¼¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¡¼¤Î¥µ¥¤¥º¤ò Êѹ¹¤¹¤ë¡£ÂçÍÆÎ̤ÎÀܳ¤Î¤¿¤á¤Ë¥Ð¥Ã¥Õ¥¡¡¼¤Î¥µ¥¤¥º¤òÁý²Ã¤µ¤»¤¿¤ê¡¢ ¼õ¿®¥Ç¡¼¥¿¤ÎÃßÀѤòÀ©¸Â¤¹¤ë¤¿¤á¤Ë¥Ð¥Ã¥Õ¥¡¡¼¤ò¸º¾¯¤µ¤»¤¿¤ê¤Ç¤­¤ë¡£

SO_SNDLOWAT ¥ª¥×¥·¥ç¥ó¤ÏÁ÷¿®Áàºî¤Î¤¿¤á¤ÎºÇÄãÎ̤òÀßÄꤹ¤ë¡£¤Û¤ó¤É¤Î½ÐÎÏÁàºî¤Ç¤Ï ¤½¤Î¥³¡¼¥ë¤Ë¤è¤Ã¤ÆÍ¿¤¨¤é¤ì¤¿¥Ç¡¼¥¿¤òÁ´¤Æ½èÍý¤·¡¢Á÷¿®¤Î¤¿¤á¤Ë¥×¥í¥È¥³¥ë ¤Ë¥Ç¡¼¥¿¤òÇÛÁ÷¤·¤¿¤ê¡¢¥Õ¥í¡¼À©¸æ¤Î¤¿¤á¤ËɬÍפʤé¤ÐÄä»ß(block) ¤·¤¿¤ê¤¹¤ë¡£ÈóÄä»ß(non-blocking)½ÐÎÏÁàºî¤Ç¤Ï¡¢Ää»ß¤¹¤ë¤³¤È¤Ê¤·¤Ë ¥Õ¥í¡¼À©¸æ¤Ç¤­¤ì¤Ð²Äǽ¤Ê¸Â¤ê¤Î¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë¡£¤·¤«¤·¥Õ¥í¡¼À©¸æ¤¬ ºÇÄãÎ̤ξ®Î̥ǡ¼¥¿¤òµö¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¤ê¡¢°ìÅÙ¤ËÁ´¤Æ¤ò ½èÍý¤¹¤ë¤³¤È¤òÍ׵ᤷ¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï¥Ç¡¼¥¿¤ÏÁ´¤¯½èÍý¤µ¤ì¤Ê¤¤¡£ ¥½¥±¥Ã¥È¤Ø¤Î½ñ¤­¹þ¤ß¤ò»î¤¹ select(2) Áàºî¤Ï¡¢ºÇÄãÎ̤¬½èÍý¤Ç¤­¤ë¾ì¹ç¤Ë¤Î¤ß¿¿¤È¤Ê¤ë¡£ SO_SNDLOWAT ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϥͥåȥ¥¯¸úΨ¤ÎÎɤ¤ÃͤËÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢ ¤¿¤¤¤Æ¤¤¤Ï 1024 ¤Ç¤¢¤ë¡£

SO_RCVLOWAT ¥ª¥×¥·¥ç¥ó¤Ï¼õ¿®Áàºî¤ÎºÇÄãÎ̤òÀßÄꤹ¤ë¡£°ìÈ̤ˡ¢¼õ¿®ÍѤΥ³¡¼¥ë¤Ï ¤Ê¤ó¤é¤«¤Î¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ë¤Þ¤ÇÄä»ß¤¹¤ë¡£¤½¤·¤ÆÍ׵ᤵ¤ì¤¿Î̤«¡¢ ¤½¤ì¤è¤ê¾®¤µ¤¤²Äǽ¤Ê¸Â¤ê¤ÎÎ̤òÊÖ¤¹¡£ SO_RCVLOWAT ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 1¤Ç¤¢¤ë¡£¤â¤· SO_RCVLOWAT ¤¬Â礭¤ÊÃͤËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¤½¤ÎºÇÄãÎ̤«Í׵ᤵ¤ì¤¿Î̤Υǡ¼¥¿¤ò ¼õ¿®¤¹¤ë¤Þ¤ÇÄä»ß¤¹¤ë¡£¤³¤Î¾ì¹ç¤Ç¤â¼õ¿®¥³¡¼¥ë¤Ï ¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤ê¡¢¥·¥°¥Ê¥ë¤ò¼õ¤±¤¿¤ê¡¢ ¼õ¿®¥­¥å¡¼¤Î¼¡¤Î¥Ç¡¼¥¿¤Î·¿¤¬ÊÖ¤¹¤Ù¤­¤â¤Î¤È°Û¤Ê¤Ã¤Æ¤¤¤¿ ¾ì¹ç¤Ë¤Ï¾¯¤Ê¤¤Î̥ǡ¼¥¿¤òÊÖ¤¹¤«¤â¤·¤ì¤Ê¤¤¡£

SO_SNDTIMEO ¥ª¥×¥·¥ç¥ó¤ÏÁ÷¿®Áàºî¤Î»þ´ÖÀÚ¤ì(timeout)¤Î»þ´Ö¤ò¼èÆÀ¤¹¤ë¡£ (¤³¤ì¤Ï getsockopt ¤Ç¤Î¤ß»ÈÍѤǤ­¤ë)¡£ ¤³¤ì¤ÏÁ÷¿®Áàºî¤ò´°Î»¤¹¤ë¤Þ¤Ç¤ÎÂÔ¤Á»þ´Ö¤Î¸Â³¦¤ÎÉäȥޥ¤¥¯¥íÉäò struct timeval ¥Ñ¥é¥á¡¼¥¿¡¼¤ò»ÈÍѤ·¤ÆÊÖ¤¹¡£¤â¤·Á÷¿®Áàºî¤¬¤³¤Î»þ´Ö¤À¤±Ää»ß¤¹¤ë¤È¡¢ ÉôʬŪ¤ËÁ÷¿®¤Ç¤­¤¿Ãͤ«¡¢Á´¤¯Á÷¿®¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï EWOULDBLOCK ¥¨¥é¡¼¤òÊÖ¤¹¡£¸½ºß¤Î¼ÂÁõ¤Ë¤ª¤¤¤Æ¡¢¤³¤Î¥¿¥¤¥Þ¡¼¤ÏÄɲäΥǡ¼¥¿¤¬ ¥×¥í¥È¥³¥ë¤ËÅϤµ¤ì¤ë¤´¤È¤ËºÆµ¯Æ°¤µ¤ì¡¢¤³¤ÎÀ©¸Â¤¬Á÷¿®¤ÎºÇÄãÎ̤«¤é ºÇ¹âÎ̤ޤǤΥµ¥¤¥º¤ÎÈϰϤνÐÎÏÉôʬ¤ËŬÍѤµ¤ì¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤ë¡£

SO_RCVTIMEO ¥ª¥×¥·¥ç¥ó¤Ï¼õ¿®Áàºî¤Î»þ´ÖÀÚ¤ì(timeout)¤Î»þ´Ö¤ò¼èÆÀ¤¹¤ë¡£ (¤³¤ì¤Ï getsockopt ¤Ç¤Î¤ß»ÈÍѤǤ­¤ë)¡£ ¤³¤ì¤Ï¼õ¿®Áàºî¤ò´°Î»¤¹¤ë¤Þ¤Ç¤ÎÂÔ¤Á»þ´Ö¤Î¸Â³¦¤ÎÉäȥޥ¤¥¯¥íÉäò struct timeval ¥Ñ¥é¥á¡¼¥¿¡¼¤ò»ÈÍѤ·¤ÆÊÖ¤¹¡£¸½ºß¤Î¼ÂÁõ¤Ë¤ª¤¤¤Æ¡¢¤³¤Î¥¿¥¤¥Þ¡¼¤Ï ¥×¥í¥È¥³¥ë¤è¤ê¿·¤¿¤Ê¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ë¤´¤È¤ËºÆµ¯Æ°¤µ¤ì¤ë¡£ ¤½¤ì¤Ç¤³¤ì¤Ïư¤«¤Ê¤¤¥¿¥¤¥Þ¡¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£ ¤â¤·¼õ¿®Áàºî¤¬ÄɲäΥǡ¼¥¿¤ò¼õ¿®¤Ç¤­¤º¤Ë¡¢¤³¤Î»þ´Ö¤À¤±Ää»ß¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ ¼õ¿®¤·¤¿¤è¤ê¾¯¤Ê¤¤¥Ç¡¼¥¿¤«¡¢Á´¤¯¥Ç¡¼¥¿¤ò¼õ¿®¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï EWOULDBLOCK ¥¨¥é¡¼¤òÊÖ¤¹¡£

ºÇ¸å¤Ë SO_TYPE ¤È SO_ERROR ¥ª¥×¥·¥ç¥ó¤â getsockopt ¤Ç¤Î¤ß»ÈÍѤµ¤ì¤ë¡£ SO_TYPE ¤Ï SOCK_STREAM ¤Î¤è¤¦¤Ê¥½¥±¥Ã¥È¤Î·¿¤òÊÖ¤¹; ¤³¤ì¤Ïµ¯Æ°»þ¤Î¥½¥±¥Ã¥È¤ò¼õ¤±·Ñ¤°¥µ¡¼¥Ð¡¼¤ËÊØÍø¤Ç¤¢¤ë¡£ SO_ERROR ¤Ï̤¼õ¿®¤Î¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¤òÊÖ¤·¡¢¥¨¥é¡¼¾õÂÖ¤ò¥¯¥ê¥¢¤¹¤ë¡£ ¥Ç¡¼¥¿¥°¥é¥àÀܳ¤Î¥½¥±¥Ã¥È¤Ë¤ª¤±¤ëÈ󯱴ü(asynchronous)¥¨¥é¡¼¤ä¡¢ ¤½¤Î¾¤ÎÈ󯱴ü¥¨¥é¡¼¤Î¥Á¥§¥Ã¥¯¤Ë»ÈÍѤǤ­¤ë¡£  

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¥¼¥í¤òÊÖ¤¹¡£¥¨¥é¡¼»þ¤Ë¤Ï -1 ¤¬ÊÖ¤µ¤ì¡¢ errno ¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤ë¡£  

¥¨¥é¡¼

EBADF
°ú¤­¿ô s ¤¬Í­¸ú¤Ê¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤Ç¤Ê¤¤¡£
ENOTSOCK
°ú¤­¿ô s ¤Ï¥Õ¥¡¥¤¥ë¤Ç¤¢¤ê¡¢¥½¥±¥Ã¥È¤Ç¤Ê¤¤¡£
ENOPROTOOPT
»ØÄꤵ¤ì¤¿ÁØ(level)¤Ë¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¸ºß¤·¤Ê¤¤¡£
EFAULT
optval ¤Ç»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤ÎÍ­¸ú¤ÊÉôʬ¤Ç¤Ï¤Ê¤¤¡£ getsockopt ¤Î¾ì¹ç¡¢ optlen ¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤ÎÍ­¸ú¤ÊÉôʬ¤Ç¤Ê¤¤¾ì¹ç¤Ë¤â¤³¤Î¥¨¥é¡¼¤¬ÊÖ¤µ¤ì¤ë¡£
 

½àµò

SVr4, 4.4BSD (¤³¤ì¤é¤Î¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï 4.2BSD ¤ÇºÇ½é¤Ë¸½¤ï¤ì¤¿)¡£ SVr4 ¤Ë¤Ï¾¤Ë ENOMEM ¤È ENOSR ¥¨¥é¡¼¡¦¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤âµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£ ¤·¤«¤·¡¢ SO_SNDLOWAT, SO_RCVLOWAT, SO_SNDTIMEO, SO_RCVTIMEO ¥ª¥×¥·¥ç¥ó¤Ë´Ø¤¹¤ëµ­½Ò¤Ï¤Ê¤¤¡£  

¥Ð¥°

¥½¥±¥Ã¥È¤Î¥ª¥×¥·¥ç¥ó¤Î¤¤¤¯¤Ä¤«¤Ï¥·¥¹¥Æ¥à¤Î¤è¤êÄ㤤ÁØ¤Ç ½èÍý¤µ¤ì¤ë¤Ù¤­¤Ç¤¢¤ë¡£  

´ØÏ¢¹àÌÜ

ioctl(2), socket(2), getprotoent(3), protocols(5), socket(7), unix(7), tcp(7)


 

Index

̾Á°
½ñ¼°
ÀâÌÀ
ÊÖ¤êÃÍ
¥¨¥é¡¼
½àµò
¥Ð¥°
´ØÏ¢¹àÌÜ

 
 
 
 
Google
  Web Linuxinfor   
 

Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account

Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright.

1999-2008 Linuxinfor.com. No rights reserved.