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

  • 相关阅读:
    .net core webapi发布到linux中
    封装EF,使用仓储模式所遇到的问题
    oracle取分组的前N条数据
    20141124
    搭建discuz论坛(2)
    安装apache mysql 论坛(一)
    L13 DNS
    L10 PUtty+SSH 访问vncviewer
    L12 samba服务器搭建
    L10 数据入站、转发、出站流程
  • 原文地址:https://www.cnblogs.com/findumars/p/4973114.html
Copyright © 2011-2022 走看看