当前位置: 技术问答>linux和unix
Linux 网络通信 Epoll 管理.
来源: 互联网 发布时间:2017-04-18
本文导语: 在做网络通信服务器端的时候. 采用了Epoll监控描述符的方式. 求解: 客户端连上服务器的时候,有2两个recv,length ==0,且errno ==EINTR,EWOULDBLOCK ,EAGAIN 当客户端正常关闭链接推出时,Epoll也会检测到一些链接,length =-1 采...
在做网络通信服务器端的时候.
采用了Epoll监控描述符的方式.
求解:
客户端连上服务器的时候,有2两个recv,length ==0,且errno ==EINTR,EWOULDBLOCK ,EAGAIN
当客户端正常关闭链接推出时,Epoll也会检测到一些链接,length =-1
采用的非阻塞模式
希望有对epoll和网络通信熟悉的帮忙解答下.
epoll部分代码
采用了Epoll监控描述符的方式.
求解:
客户端连上服务器的时候,有2两个recv,length ==0,且errno ==EINTR,EWOULDBLOCK ,EAGAIN
当客户端正常关闭链接推出时,Epoll也会检测到一些链接,length =-1
采用的非阻塞模式
希望有对epoll和网络通信熟悉的帮忙解答下.
if((events[i].events&EPOLLIN)&&(ev->events&EPOLLIN))
{
if(listenfd == ev->fd)
{
epollserver.AcceptConn(listenfd, 0, NULL);
//链接推送
//int nTempFd =epollserver.GetTempFd();
//printf("nTempFd:%dn", nTempFd);
//cPthreadPool.pool_add_work(&push,&nTempFd);
}
else
{
//向线程池内增加工作任务
printf("cPthreadPool.pool_add_work()n");
cPthreadPool.pool_add_work(&func,ev);
}
}
epoll部分代码
|
read=0表示对方发来FIN,说明对方关闭了连接写。
read=-1,但errno==EINTR or EAGAIN说明没什么事。
read=01,但errno不等于上面两个,那就出问题了,连接坏了。
read=-1,但errno==EINTR or EAGAIN说明没什么事。
read=01,但errno不等于上面两个,那就出问题了,连接坏了。