- 论坛徽章:
- 0
|
回复 #5 ruchong 的帖子
我现在这样做的
sock_fd[max]
for(i=0;i<count;i++)
{
ev.events=EPOLLIN|EPOLLET;
if(epoll_ctl(epfd,EPOLL_CTL_ADD,sock_fd,&ev)<0)
{
perror("epoll_ctl";
return -1;
}
}
for(;
{
nfds=epoll_wait(epfd,events,256,500);
for(n=0;n<nfds;++n)
{
for(int j =0;j<count;j++)
{
new_fd=sock_fd;
if(new_fd==events[n].data.fd)
{
int test_fd=accept(new_fd,(struct sockaddr *)&CLI,&len);
ev.events=EPOLLIN|EPOLLET;
setnonblock(new_fd);
ev.data.fd=test_fd;
epoll_ctl(epfd,EPOLL_CTL_ADD,test_fd,&ev);
}
else if(events.events & EPOLLIN)
{
int ret=recv(events[n].data.fd,buf,MAXBUFF,0);
if(ret < 0 )
perror("recv");
if(ret》0)
…………
if(ret == 0)
………………
}
}
}
}
运行测试,报错,recv: socket operation on non-socket |
|