epollÄ£ÐÍÖÐlistenº¯ÊýµÄ²ÎÊýÎÊÌâ¡£
¸÷λºÃ£¬ÔÚÍøÉÏÖÚ¶à½éÉÜepollÄ£ÐÍ´¦ÀíÍøÂçÁ¬½ÓµÄÄ£ÐÍÖÐ1DB8G&}8um K(mR8u¶¼ÊÇÏñÒÔÏÂÕâÑùµÄ´úÂëÆ¬¶Î£º|9WBsx;R H
/* ¿ªÆô socket ¼àÌý */1F1[7G-Vc_0un8C
if ((listener = socket(PF_INET, SOCK_STREAM, 0)) == -1) {z~MM @ S(\i#M%{C$B
perror("socket");
exit(1);&Xs.O*|sn
} else
printf("socket ´´½¨³É¹¦£¡\n");
l/mL o}E8`N)Q
setnonblocking(listener);
bzero(&my_addr, sizeof(my_addr));
my_addr.sin_family = PF_INET;1bm1|&u"e"FB2r&z
my_addr.sin_port = htons(myport); AP \nR#HmuNo
if (argv[3]) PI b@i;?
my_addr.sin_addr.s_addr = inet_addr(argv[3]);7p6k{$NP-vL1~ q5f
else
my_addr.sin_addr.s_addr = INADDR_ANY;Wu$we0[q
~rc `z+OC
if (bind5pS:A(t:V0we O
(listener, (struct sockaddr *) &my_addr, sizeof(struct sockaddr))
== -1) {
perror("bind");ay\0~7O7B0S
exit(1);eM-Np*ey&D{
} else
printf("IP µØÖ·ºÍ¶Ë¿Ú°ó¶¨³É¹¦\n");/lPq^8}%Y'F
if (listen(listener, lisnum) == -1) {5^xK ~SkN~X+Z
perror("listen"); fm3a8X] }A5tL3h[V
exit(1);}|*TcT
} else
printf("¿ªÆô·þÎñ³É¹¦£¡\n");s.cZM'j
,N7Gt/De?.v t
/* ´´½¨ epoll ¾ä±ú£¬°Ñ¼àÌý socket ¼ÓÈëµ½ epoll ¼¯ºÏÀï */
kdpfd = epoll_create(MAXEPOLLSIZE);
len = sizeof(struct sockaddr_in);
ev.events = EPOLLIN | EPOLLET;~#ilWjIJ6NH8t:J
ev.data.fd = listener;
if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, listener, &ev) < 0) {
fprintf(stderr, "epoll set insertion error: fd=%d\n", listener);4Y9N6eeH2w}q F
return -1;+f|Q)AKg|Y
} else
printf("¼àÌý socket ¼ÓÈë epoll ³É¹¦£¡\n");
curfds = 1;
while (1) {
/* µÈ´ýÓÐʼþ·¢Éú */BAr3xQ(Xd
nfds = epoll_wait(kdpfd, events, curfds, -1);
if (nfds == -1) {
perror("epoll_wait");'^cKK5u0F R/z}9W
break;b wluKZ\&zX$ha
}!F{]C;{Myu;pcX
/* ´¦ÀíËùÓÐʼþ */
for (n = 0; n < nfds; ++n) {;k(Ci,e^4K
if (events[n].data.fd == listener) {Yv qLh;Hz:oU
new_fd = accept(listener, (struct sockaddr *) &their_addr,
&len);(j2R.]qS W2gM
if (new_fd < 0) { Z(P` H6b^hA"HU
perror("accept");
continue;
(w6OM9Vt
ÎÒµÄÎÊÌâÊÇepoll±¾À´ÊÇÓÃÀ´´¦ÀíN¶àÁ¬½ÓµÄ·½·¨£¬¶øÔÚ´ËÖе÷ÓÃlisten(listener, lisnum)
º¯Êý£¬¶øÍ¨³£µÚ¶þ¸ö²ÎÊýµÄÖµ¶¼ºÜС£¬±ÈÈç5£¬ 10 £¬20£¬µÈµÈ£¬»¹ÓÐÈË˵listenº¯Êý¸ù±¾²»ÓÃZ S!qnZ&y%i
²ÎÊý£¬¿É²»Óøù±¾ÎÞ·¨±àÒë¡£ÎÒÏëÖªµÀµ±listen²ÎÊýºÜСʱ¶Ô´¦Àí´óÁ¿Á¬½ÓÊÇ·ñ»áÓÐÓ°Ï죬