(转) 使用epoll的ET模式下的tcp服务处理特点
2011-08-24 18:14
337 查看
我们知道ET模式下的事件触发需要遇到EAGAIN结束,那么在tcp服务中不管是listen socket还是data socket,都需要做相应处理,特别是listen socket ,很容易被遗漏 , 新连接未处理,从而出现close_wait状态的socket 。 另外错误识别上,EAGAIN和EINTR一定要处理好,如果是主动连接的data socket 在non-block下还要处理EINPROGRESS 。 listen socket 处理
while(1)
{
int cfd = accept(GetFD(),(sa_t*)&caddr,&clen) ;
if ( cfd == -1 )
{
if ( errno == EAGAIN ) return 0 ;
//other else continue or close the socket
//else if ( errno == EINTR ) continue ;
//return -1 ;
}
set_nonblock(cfd) ;
//set_sock_nodelay(cfd) ;
//set_sock_linger(cfd) ;
if ( OnNewClient(cfd) != 0 )
{
close(cfd) ;
}
}
相关文章推荐
- Epoll的ET模式下对TCP的Connect的处理
- Linux网络编程--使用epoll模型同时处理tcp和udp服务
- Linux网络编程--使用epoll模型同时处理tcp和udp服务
- (转)彻底学会使用epoll(一)——ET模式实现分析
- 计算机网络教程-应用层(七)客户-服务器模式、套接字、使用传输层的服务(tcp、udp)
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- epoll_wait的LT 和 ET事件处理模式
- 彻底学会使用epoll(一)——ET模式实现分析
- epoll用法说明,ET模式下的边缘触发处理同时多事件
- 非阻塞socket与epoll的ET模式结合使用注意事项
- 在ACE中使用epoll的ET模式
- 彻底学会使用epoll(一)——ET模式实现分析
- EPOLL使用ET模式的异常现象
- 非阻塞socket与epoll的ET模式结合使用注意事项
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- 彻底学会使用epoll(一)——ET模式实现分析
- 彻底学会使用epoll(一)——ET模式实现分析
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- epoll在LT和ET模式下的读写方式