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

  • 相关阅读:
    函数和指针
    SQL Server 2005 存储过程
    位数组
    C的名字空间
    C奇特的声明
    位字段
    Git忽略规则
    常用C库简介
    《SQL Server 2005 编程入门经典》第一到十二章
    Linus:利用二级指针删除单向链表
  • 原文地址:https://www.cnblogs.com/findumars/p/4973114.html
Copyright © 2011-2022 走看看