在Qt Linux环境下编译使用libevent
来源:互联网 发布:nginx 伪静态 编辑:程序博客网 时间:2024/06/05 06:00
检查libevent是否安装,是则会列出清单,否则空白。
ls -al /usr/lib |grep libevent
如果没有安装,请去官网下载源文件http://libevent.org/
make
make install
安装完成,会自动把相关头文件拷贝到/usr/inclue,库文件拷贝到/usr/lib。
Qt的编译环境,需要在.pro文件添加LIBS += /usr/lib/libevent.so
———————————
查看当前服务器的链接数
ulimit -a
lsof -p pid
http://blog.csdn.net/feitianxuxue/article/category/1111233
linux epoll介绍和程序实例
ls -al /usr/lib |grep libevent
如果没有安装,请去官网下载源文件http://libevent.org/
解压libevent-2.1.8-stable.tar.gz,tar xzvf libevent-2.1.8-stable.tar.gz
然后进入目录编译
./configure -prefix=/usrmake
make install
安装完成,会自动把相关头文件拷贝到/usr/inclue,库文件拷贝到/usr/lib。
Qt的编译环境,需要在.pro文件添加LIBS += /usr/lib/libevent.so
1、.pro文件
TEMPLATE = appCONFIG += consoleCONFIG -= app_bundleCONFIG -= qtSOURCES += main.cLIBS += /usr/lib/libevent.so
2、main.c文件
#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <stdio.h>#include <string.h>#include <event.h>#include <stdlib.h>#define PORT 8011#define BACKLOG 5#define MEM_SIZE 1024struct event_base* base;struct sock_ev{ struct event* read_ev; struct event* write_ev; char* buffer;};void release_sock_event(struct sock_ev* ev){ event_del(ev->read_ev); free(ev->read_ev); free(ev->write_ev); free(ev->buffer); free(ev);}void on_write(int sock, short event, void* arg){ char* buffer = (char*)arg; send(sock, buffer, strlen(buffer), 0); free(buffer);}void on_read(int sock, short event, void* arg){ struct event* write_ev; int size; struct sock_ev* ev = (struct sock_ev*)arg; ev->buffer = (char*)malloc(MEM_SIZE); bzero(ev->buffer, MEM_SIZE); size = recv(sock, ev->buffer, MEM_SIZE, 0); printf("receive data:%s, size:%d\n", ev->buffer, size); if (size == 0) { release_sock_event(ev); close(sock); return; } event_set(ev->write_ev, sock, EV_WRITE, on_write, ev->buffer); event_base_set(base, ev->write_ev); event_add(ev->write_ev, NULL);}void on_accept(int sock, short event, void* arg){ struct sockaddr_in cli_addr; int newfd, sin_size; struct sock_ev* ev = (struct sock_ev*)malloc(sizeof(struct sock_ev)); ev->read_ev = (struct event*)malloc(sizeof(struct event)); ev->write_ev = (struct event*)malloc(sizeof(struct event)); sin_size = sizeof(struct sockaddr_in); newfd = accept(sock, (struct sockaddr*)&cli_addr, &sin_size); event_set(ev->read_ev, newfd, EV_READ|EV_PERSIST, on_read, ev); event_base_set(base, ev->read_ev); event_add(ev->read_ev, NULL);}int main(int argc, char* argv[]){ struct sockaddr_in my_addr; int sock; sock = socket(AF_INET, SOCK_STREAM, 0); int yes = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)); memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(PORT); my_addr.sin_addr.s_addr = INADDR_ANY; bind(sock, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)); listen(sock, BACKLOG); struct event listen_ev; base = event_base_new(); event_set(&listen_ev, sock, EV_READ|EV_PERSIST, on_accept, NULL); event_base_set(base, &listen_ev); event_add(&listen_ev, NULL); event_base_dispatch(base); return 0;}
———————————
查看当前服务器的链接数
ulimit -a
lsof -p pid
参考文献:
http://blog.csdn.net/feitianxuxue/article/category/1111233
linux epoll介绍和程序实例
http://blog.csdn.net/sparkliang/article/details/4770655
select、poll、epoll之间的区别总结
http://www.cnblogs.com/Anker/p/3265058.html
0 0
- 在Qt Linux环境下编译使用libevent
- 在Windows环境下使用MinGW编译Qt 4.8.6
- libevent 在window环境编译
- libevent 在window环境编译
- libevent在vs下编译
- linux在eclipse下编译并单步调试libevent
- linux下qt编译环境及其安装
- linux下配置QT嵌入式编译环境
- QT环境搭建: QT-4.8.6在windows下的使用 -(2)静态编译
- linux下搭建QT开发环境及编译QT demo
- QT在linux下编译mysql驱动
- QT在linux下的交叉编译
- QT在嵌入式Linux环境下运行
- qt 在linux环境下的搭建
- 关于在linux下搭建qt编译环境的那些事。
- [C++] 在windows下编译libevent 2.0
- libevent 在windows下的编译过程
- libevent 在windows下的编译过程
- 功耗优化方法
- php 单例模式demo
- 基础最短路五 POJ1860
- 简单地用swing写一个登陆页面
- 关于Android VideoView导致的内存泄漏的问题
- 在Qt Linux环境下编译使用libevent
- linux 编译ffmpeg 支持x264, x265
- 有关Java从数据库查询出的数据导出Excel POI分页功能总结
- java编程思想 -- java概述
- MergeDelta增加写ORC格式功能
- <column name="USERID" precision="10" scale="0" />什么意思???
- 启动APK不现实主界面直接跳转网页会出现
- C#之switch多分支语句
- 架构分布式____负载均衡4层和7层理解