ºìÁªLinuxÃÅ»§
Linux°ïÖú

¶ÔÓÚlinux socketÓëepollÅäºÏÏà¹ØµÄһЩÐĵüǼ

·¢²¼Ê±¼ä:2008-07-31 00:44:11À´Ô´:ºìÁª×÷Õß:gxllba
³ö×Ô£ºÁèÏþweb²¿Âä

ûÓжàÉÙ¸ßÉîµÄ¶«Î÷£¬È«µ±¼Ç¼£¬ËäÈ»¼òµ¥£¬µ«ÊÇûÓÐ×ö¹ý²âÊÔ»¹ÊÇͦÈÝÒ×ÈÃÈ˺ýÍ¿µÄ

int nRecvBuf=32*1024;//ÉèÖÃΪ32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));

ͨ¹ýÉÏÃæÓï¾ä¿ÉÒÔ¼òµ¥ÉèÖûº³åÇø´óС,²âÊÔÖ¤Ã÷£º¸úepoll½áºÏµÄʱºòÖ»Óе±µ¥´Î·¢Ë͵ÄÊý¾ÝÈ«±»´Ó»º³åÇø¶ÁÍê±ÏÖ®ºó²Å»áÔٴα»´¥·¢£¬¶à´Î·¢ËÍÊý¾ÝÈç¹ûûÓжÁÈ¡Íê±Ïµ±»º³åÇøδÂúµÄʱºòÊý¾Ý²»»á¶ªÊ§£¬»áÀÛ¼Óµ½ºóÃæ¡£

Èç¹û»º³åÇøδÂú£¬Í¬Ò»Á¬½Ó¶à´Î·¢ËÍÊý¾Ý»á¶à´ÎÊÕµ½EPOLLINʼþ¡£

µ¥´Î·¢ËÍÊý¾Ý>socket»º³åÇø´óСµÄÊý¾ÝÊý¾Ý»á±»×èÈû·Ö´Î·¢ËÍ£¬ËùÒÔÑ­»·½ÓÊÕ¿ÉÒÔÓÃENLIGE´íÎóÅжϡ£

Èç¹û»º³åÇøÂú£¬Ð·¢Ë͵ÄÊý¾Ý²»»á´¥·¢epollʼþ£¨Ò²ÎÞÒì³££©£¬Ã¿´Îrecv¶¼»áΪ»º³åÇøÌÚ³ö¿Õ¼ä£¬Ö»Óе±»º³åÇø¿ÕÏдóСÄܹ»ÔٴνÓÊÕÊý¾ÝepollINʼþ¿ÉÒÔÔٴα»´¥·¢

½ÓÊÕʱ½ÓÊÕ´óСΪ0±íʾ¿Í»§¶Ë¶Ï¿ª£¨²»¿ÉÄÜÓÐ0Êý¾Ý°ü´¥·¢EPOLLIN£©,-1±íʾÒì³££¬Õë¶Ôerrorno½øÐÐÅжϿÉÒÔÈ·¶¨ÊǺÏÀíÒì³£»¹ÊÇÐèÒªÖÕÖ¹µÄÒì³££¬>0¶ø²»µÈÓÚ»º³åÇø´óС±íʾµ¥´Î·¢ËͽáÊø¡£

Èç¹ûÖÐ;ÁÙʱµ÷Õû½ÓÊÕ»º´æÇø´óС£¬²¢ÇÒÔÚÉÏÒ»´ÎÖÐÊý¾ÝûÓÐÍêÈ«½ÓÊÕµ½Óû§¿Õ¼ä£¬Êý¾Ý²»»á¶ªÊ§£¬»áÀÛ¼ÓÔÚÒ»Æð¡£

ËùÒÔ×ܽáÆðÀ´£¬ÏµÍ³¶ÔÓÚÊý¾ÝµÄÍêÕûÐÔ»¹ÊÇ×öÁËÏ൱µÄ±£Õý£¬ÖÁÓÚÎȶ¨ÐÔûÓÐ×÷¸üÉîÒ»²½µÄ²âÊÔ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ