epoll 实际使用
int n, i;
n = epoll_wait(efd, _events, MAXEVENTS, -1);
for (i = 0; i < n; i++) {
if ((_events[i].events & EPOLLERR)
|| (_events[i].events & EPOLLHUP) || (!(_events[i].events
& EPOLLIN))) {
ALOGD(SYS_LOG_TAG " SysWatcher::EPOLLERR||EPOLLHUP||!EPOLLIN\n");
fprintf(stderr, "epoll error\n");
close(_events[i].data.fd);
continue;
} else if (dfd == _events[i].data.fd) {
ssize_t count;
memset(buf, 0, RECV_BUF_DEPTH);
/*
count = read(_events[i].data.fd, buf, RECV_BUF_DEPTH);
if (count == -1) {
// If errno == EAGAIN, that means we have read all data. So go back to the main loop.
if (errno != EAGAIN) {
perror("read");
done = 1;
ALOGD(SYS_LOG_TAG " SysWatcher:: errno != EAGAIN\n");
}
ALOGD(SYS_LOG_TAG " SysWatcher:: errno == EAGAIN\n");
break;
} else if (count == 0) { //��ʱ
// End of file. The remote has closed the connection.
done = 1;
ALOGD(SYS_LOG_TAG "SysWatcher::recv() DISCONNECTED.");
break;
}*/
message = string(buf);
ALOGD(SYS_LOG_TAG " SysWatcher Recive Data from BLEPare data=%s\n", buf);
bool dis_st = RouterSysWatcher::dispath(message);
message = "";
memset(buf, 0, RECV_BUF_DEPTH);
if (dis_st) {
ALOGD(SYS_LOG_TAG "dispath sucess! dis_ret =%d", dis_st);
} else {
ALOGD(SYS_LOG_TAG "dispath error! dis_ret =%d", dis_st);
continue;
}
ALOGD(SYS_LOG_TAG " Epoll test, buf = %s, count =%d", buf, count);
}
}
_data_router -> readInfoHw(&mInfo);
if (strlen(mInfo.BTMACaddr) > 0 and mac_st == false) {
mac_st = SysWatcher::instance()->setMacAddr(mInfo.BTMACaddr);
ALOGD(SYS_LOG_TAG "......readInfoHW: conn=%d, init=%d, numC=%d, MAC=%s",
mInfo.isBTConnected, mInfo.isBTInitialized, mInfo.numClient, mInfo.BTMACaddr);
}
}
free(_events);
_events = 0;
close(dfd);
}
epoll 实际使用的更多相关文章
- 从I/O复用谈epoll为什么高效
上一篇文章中,谈了一些网络编程的基本概念.在现实使用中,用的最多的就是I/O复用了,无非就是select,poll,epoll 很多人提到网络就说epoll,认为epoll效率是最高的.单纯的这么认为 ...
- select、poll、epoll之间的区别总结
select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...
- (转载) Linux IO模式及 select、poll、epoll详解
注:本文是对众多博客的学习和总结,可能存在理解错误.请带着怀疑的眼光,同时如果有错误希望能指出. 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案 ...
- linux下select/poll/epoll机制的比较
select.poll.epoll简介 epoll跟select都能提供多路I/O复用的解决方案.在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSI ...
- epoll LT/ET 深度剖析
EPOLL事件的两种模型: Level Triggered (LT) 水平触发 .socket接收缓冲区不为空 有数据可读 读事件一直触发 .socket发送缓冲区不满 可以继续写入数据 写事件一直触 ...
- 非阻塞/异步(epoll) openssl
前段时间在自己的异步网络框架handy中添加openssl的支持,当时在网络上搜索了半天也没有找到很好的例子,后来自己慢慢的摸索,耗费不少时间,终于搞定.因此把相关的资料整理一下,并给出简单的例子,让 ...
- select,epoll,poll比较
介绍和比较 http://www.cnblogs.com/maociping/p/5132583.html 比较 http://www.dataguru.cn/thread-336032-1-1.ht ...
- Linux epoll
一. epoll函数集 epoll主要有三个函数: 1. int epoll_create(int size); 创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大.这个参数不同于 ...
- linux下epoll实现机制
linux下epoll实现机制 原作者:陶辉 链接:http://blog.csdn.net/russell_tao/article/details/7160071 先简单回顾下如何使用C库封装的se ...
- select、poll、epoll之间的区别总结[整理]
select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select ...
随机推荐
- android开发时,finish()跟System.exit(0)的区别
这两天在弄Android,遇到一个问题:所开发的小游戏中有背景音乐,玩的过程中始终有音乐在放着,然后在我退出游戏后,音乐还在播放! 我看了一下我最开始写的退出游戏的代码,就是简单的finish() ...
- matlab中的ishghandle
ishghandle True for Handle Graphics object handles. ishghandle(H) returns an array that contains 1's ...
- libyuv 编译 for android
libyuv is an open source project that includes is an instrumentation framework for building dynamic ...
- HTTP基础04--web服务器
单台虚拟主机实现多个域名 由于虚拟服务器的功能,一台HTTP服务器可以搭建多个Web站点: 在互联网上,域名通过 DNS 服务映射到 IP 地址(域名解析)之后访问目标网站.当请求发送到服务器时,已经 ...
- 分享Kali Linux 2016.2最新镜像201609
分享Kali Linux 2016.2最新镜像20160919 Kali Linux官方继9月9日发布Kali Linux 2016.2的第36周镜像W36后,9月19日发布了Kali Linux ...
- DP(优化) UVALive 6073 Math Magic
/************************************************ * Author :Running_Time * Created Time :2015/10/28 ...
- html表单应用
<!DOCTYPE html> <html> <head> <meta name="generator" content="HT ...
- sqlserver linkserver
--创建链接服务器exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'exec sp_addlinkedsrvlogin ' ...
- TYVJ P1047 乘积最大 Label:dp
背景 NOIP 2000 普及组 第三道 描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力 ...
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
//今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateStrin ...