zoukankan      html  css  js  c++  java
  • 基于epoll的聊天室程序

    epoll相对于poll和select这两个多路复用的I/O模型更加的高效。epoll的函数很简单,麻烦的地方在于水平触发和边沿触发。

    用张图来说明下
    20130713202857140

    ET(边沿)只是在状态反转时触发,比如从不可读到可读。而LT(水平)就是如果可读,就会一直触发。所以在使用ET的时候要做一些额外的处理,比如可读的,一直把缓冲区读完,进入不可读状态,下次来数据才会触发。

    下面贴出代码,只是一个简单的练习的例子
    socketheads.h

    zepoll.h

    zepoll.cpp

    task.h

    task.cpp

    epoll_server.h

    epoll_server.cpp

    main.cpp

    客户端用qt简单的写了一个
    20130713204007843
    客户端服务端代码:epoll_chatroom.zip

    http://love.junzimu.com/archives/2660

  • 相关阅读:
    控件视图的实现原理
    建造者模式
    leetcode701
    leetcode991
    leetcode990
    leetcode989
    leetcode988
    leetcode987
    leetcode986
    leetcode985
  • 原文地址:https://www.cnblogs.com/findumars/p/4973114.html
Copyright © 2011-2022 走看看