当前位置:  技术问答>linux和unix

有没有EPOLL的例子学习一下?

    来源: 互联网  发布时间:2015-12-21

    本文导语:  我在网上找了个,但很容易出问题,请问有没有更好的?谢谢。 | 我这里有一个 ,贴出来大家学习一下. 运行这个程序需要预先设置栈内存和文件描述符上限, 否则运行失败 ulimit -n 16384 ulim...

我在网上找了个,但很容易出问题,请问有没有更好的?谢谢。

|
我这里有一个 ,贴出来大家学习一下.


运行这个程序需要预先设置栈内存和文件描述符上限, 否则运行失败
ulimit -n 16384
ulimit -s 4096

文件名:server.c
编译: gcc server.c -Wall -O2 -pthread -o server
程序源码如下(请自行编辑宏定义SERVER_IP为自己的IP):

/*Linux 2.6 x86_64 only*/

#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define THREAD_MAX 4096
#define LISTEN_MAX 5000
#define SERVER_IP "192.168.1.103"

typedef struct 
{
    char   ip4[128];
    int    port;
    int    fd;
} LISTEN_INFO;

//服务器参数
static LISTEN_INFO s_listens[LISTEN_MAX];

//线程池参数
static unsigned int s_thread_para[THREAD_MAX][8];//线程参数
static pthread_t s_tid[THREAD_MAX];//线程ID
pthread_mutex_t s_mutex[THREAD_MAX];//线程锁


//私有函数
static int init_thread_pool(void);
static int init_listen4(char *ip4, int port, int max_link);

//线程函数
void * test_server4(unsigned int thread_para[]);

int main(int argc, char *argv[])//客户端驱动
{
    int            i, j, rc;
   
    int            sock_listen;    //监听套接字
    int            sock_cli;    //客户端连接
    int            listen_index;
    
    int            epfd;
    int            nfds;
    
    struct epoll_event    ev;
    struct epoll_event    events[LISTEN_MAX];

    socklen_t        addrlen;    //地址信息长度
    struct sockaddr_in    addr4;        //IPv4地址结构

    //线程池初始化
    rc = init_thread_pool();
    if (0 != rc) 
     exit(-1);
    
    //初始化服务监听
    for(i = 0; i  rc) 
        {
            fprintf(stderr, "无法创建服务器监听于%s:%drn", s_listens[i].ip4, s_listens[i].port);
            exit(-1);
        }
        s_listens[i].fd = rc;
    }
    
    //设置集合
    epfd = epoll_create(8192);
    for (i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 有没有真正的高手知道jTable的用法请给个例子好吗?(极高分)
  • 有没有专门介绍APPLET的书,和例子
  • 有没有关于xml生成树的例子,有请发给我?
  • 有没有JSP读文件的例子?
  • 有没有关于如何发布Entity Bean的例子?
  • 有没有那位大虾在redhat9.0下测试过ldd2里面的例子?!
  • 想学习linux下的C++开发,大家有没有好的例子推荐一下!
  • 有谁在linux下用c++读mysql数据库啊!有没有例子让小弟参考啊!急!!!!
  • 有没有办法在线程的run()里面改变外面的类的变量的值,有例子
  • libpcap代码包里有没有文档和例子?
  • 能不能将对象序列化后存到数据库再取出还原?有没有例子?
  • 请问:select函数是干什么用的啊,有没有相关的例子啊?
  • 请问有没有完整的javamail的例子?有的话请告诉小弟,小弟急着用。高分送
  • 有没有关于针对文本文件或数据库读取和写入的例子
  • 有没有将一个XML文档转换为一棵JTree显示的例子,拜托拜托!
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • 有没有linux内核学习的QQ群呢?
  • 学习JBuild,有没有什么好的书??
  • 有没有JB5的学习教材
  • 学习JAVA程序设计,有没有《WINDOWS程序设计》这样的经典书籍?
  • 我想学习jbuilder的使用,有没有好书?
  • 学习UNIX,有没有好书推荐
  • 有没有人学习过《unix 环境高级编程>>?
  • 请问学习java编程有没有好一点的报纸杂志,请大家推荐一下!
  • 请问有没有关于xmlspy的学习资料
  • GridBagLayout好繁啊,有没有好的方法学习?
  • 我是新手,各位大虾,请问学习JAVA有没有什么好用的书!!谢谢。有分挣哦!
  • 有没有在windows下模拟Linux命令系统的软件! 我想学习Linux的基本命令!
  • 有没有linux qq群 ???? 大家学习交流阿 ! 95312755
  • 请问,winXP没有了内建的java虚拟机,是不是就意味着winXP下面不可以浏览JSP网页了???请知道的告诉我,谢谢,我在想还有没有必要学习JSP.......
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [AIX]有没有办法查到有没有用户执行了Kill命令
  • linux里有没有象vc那样的IDe啊,有没有类库什么的呢
  • 有没有用过 JCE 的朋友,生成x.509证书,有没有免费算法,用哪家的比较好,给出示例代码!
  • 请问jsp有没方法判断窗口有没有框架???
  • NOSQL iis7站长之家
  • 请问:编译内核时,make bzimage命令后,提示没有这个规则,这有没有影响呀?
  • 有没有搞错,JSP精华版数据全部没有了。
  • 我想在VMware上装FreeBSD,有没有人这样做过?有什么问题没有?
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?
  • Qt中有没有类似VB中winsock和timer的控件呀,我好像没有找到.
  • 转 请大家讨论一下,现在我们开发J2EE的Application Server还有没有机会,这里有没有这种人才? (愿意给300分)
  • 有没有用过ejb,又开始学com的,如果有,介绍一下经验?没有,则给个理由(如果你有时需要用DNA)?
  • java中有没有destructor的东东,好像一般的class里都没有嘛,难道不要手工做这些事情,全部交给gc处理吗?
  • 在linux redhat6.0中,进入x_window,请问系统有没有自带的c编译器,比如gcc;如果没有,那里可以下载并安装?
  • JAVA中没有宏,那编程和调试起来不是很麻烦吗?有没有一些折中办法?
  • SCJP有没有用
  • InstallShield 有没有linux版本的?
  • 有没有玩的转LINUX源码的高手?
  • 谁知道现在有没有Linux下的搜索引擎?
  • 谁知道现在有没有Linux下的搜索引擎??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3