- 论坛徽章:
- 0
|
//sin_size = sizeof(struct sockaddr_in);
//printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));
fd_set rdfdset, exfdset;
while(1)
{
FD_ZERO(&rdfdset);
FD_SET(sock_fd, &rdfdset);
FD_SET(new_fd, &rdfdset);
FD_ZERO(&exfdset);
FD_SET(new_fd, &exfdset);
if(select(FD_SETSIZE, &rdfdset, NULL, &exfdset, NULL) < 0)
{
printf("select Error: %s\n", strerror(errno));
exit(1);
}
if(FD_ISSET(sock_fd, &rdfdset))//FD_ISSET(usersock_fd, &rdfdset)
{
if((new_fd = accept(sock_fd,(struct sockaddr *)&their_addr,&sin_size)) == -1)
{
perror("accept error\n");
exit(1);
}
}
if(FD_ISSET(new_fd, &rdfdset))
{
char buf[100];
memset(buf, 0, sizeof(buf));
int numbytes;
if ((numbytes=recv(new_fd, buf, 100, 0)) == -1)
{
perror("recv");
}
buf[numbytes] = '\0';
printf("Received: %s",buf);
}
if(FD_ISSET(new_fd, &exfdset))
{
perror("close!!!");
close(new_fd);
break;
}
}
sock_fd为监听描述符,为什么从接收连接后就算没有数据 if(FD_ISSET(new_fd, &rdfdset))
也会一直返回1呀 !!!请帮忙 呀 我急了。。。 |
|