打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用epoll的ET模式下的tcp服务处理特点
我们知道ET模式下的事件触发需要遇到EAGAIN结束,那么在tcp服务中不管是listen socket还是datasocket,都需要做相应处理,特别是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) ;
        }
    }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
小结一下Linux下使用TCP通讯时遇到的问题
linux下epoll模型accept并发问题 ? 搜索技术博客-淘宝
网络编程之信号的屏蔽
网络编程
socket编程总结
如何判断socket已经断开
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服