www.pudn.com > unpv12e.rar > readable_listen.c
#include "icmpd.h"
int
readable_listen(void)
{
int i, connfd;
socklen_t clilen;
clilen = addrlen;
connfd = Accept(listenfd, cliaddr, &clilen);
/* 4find first available client[] structure */
for (i = 0; i < FD_SETSIZE; i++)
if (client[i].connfd < 0) {
client[i].connfd = connfd; /* save descriptor */
break;
}
if (i == FD_SETSIZE)
err_quit("too many clients");
printf("new connection, i = %d, connfd = %d\n", i, connfd);
FD_SET(connfd, &allset); /* add new descriptor to set */
if (connfd > maxfd)
maxfd = connfd; /* for select() */
if (i > maxi)
maxi = i; /* max index in client[] array */
return(--nready);
}