socke+epoll
读:
#define V5CLI_READ_MSG_LEN 1024
char readMsg[V5CLI_READ_MSG_LEN];
int n = ;
int nread = ;
while((nread = read(eventfd, readMsg + n, V5CLI_READ_MSG_LEN-)) > ){
n += nread;
}//读到EAGAIN,说明读完了
if(nread < && errno != EAGAIN) {
V5CLI_LOG_ERROR("v5cli process read err(%d)",errno);
close(eventfd);
eventList[loop].data.fd = -;
continue;
}
写:
unsigned long data_size = VOS_StrLen(pszString);
int n = data_size;
int nwrite = ;
while (n > ) {
nwrite = write(connect_fd, (char *)(pszString + data_size-n), n);
if (nwrite < n) {
if (nwrite == - && errno != EAGAIN) {
perror("write error");
}
break;
}
n -= nwrite;
}
accept:
if(eventList[loop].data.fd == serverfd){
clientLen = sizeof(struct sockaddr_un);
memset(&client, sizeof(struct sockaddr_un), , sizeof(struct sockaddr_un));
while((conn_sock = accept(serverfd, (struct sockaddr*)&client, &clientLen)) > )
{
/* 将socket设置为非阻塞模式 */
if(nonBlockSocket(conn_sock) != V5CLI_OK) {
printf("v5cli process nonblock failed.\n");
}
event.data.fd = conn_sock;
event.events = EPOLLIN|EPOLLET;
printf("v5cli process new client(%d)\r\n",conn_sock);
epoll_ctl(epollfd, EPOLL_CTL_ADD, conn_sock,&event); //将新的conn_sock添加到epoll的监听队列中
memset(&client, sizeof(struct sockaddr_un), , sizeof(struct sockaddr_un));
/*if(nonBlockSocket(conn_sock) != V5CLI_OK) {
printf("v5cli process set non block fail");
goto END_PRO;
}*/
}
if(conn_sock < && errno != EAGAIN) {
printf("v5cli process accept err %d", conn_sock);
}
}
socke+epoll的更多相关文章
- sellect、poll、epoll
http://www.cnblogs.com/alex3714/p/4372426.html select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多 ...
- 从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用来告诉内核这个监听的数目一共有多大.这个参数不同于 ...
随机推荐
- iOS - Share Extension
1. 学 Share Extension 之前 先了解一下iOS的App Extension 2.1 创建Share Extension扩展Target ** 注:扩展不能单独创建,必须依赖于应用工程 ...
- Python学习(25):Python执行环境
转自 http://www.cnblogs.com/BeginMan/p/3191856.html 一.python特定的执行环境 在当前脚本继续进行 创建和管理子进程 执行外部命令或程序 执行需要输 ...
- 【PHP】 curl 上传文件 流
在运行过程中, 以下两种方式要看你的PHP 版本 'file' =>'@' .$filePath 'file' =>new CURLFile(realpath($filePath)) 本次 ...
- 【PHP】 毫秒级时间戳和日期格式转换
在并发量搞得情况下.需要开启毫秒级运算 mysql 支持: `create_time` datetime() DEFAULT NULL COMMENT '创建时间', 效果 PHP 代码实现: &l ...
- LeetCode-494. Target Sum(DFS&DP)
You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symb ...
- LeetCode-394. Decode String(DFS)
Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...
- Java初学者都必须理解的六大问题 (整理自网络)
问题一:我声明了什么! 1. String s = "Helloworld!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello ...
- How to Use Postman to Manage and Execute Your APIs
How to Use Postman to Manage and Execute Your APIs Postman is convenient for executing APIs because ...
- Mysql命令行导入sql数据
mysqldump 是在 操作系统命令行下运行的,不是在 MySQL 命令行下运行的. 登陆数据库: 登陆本地mysql : mysql -h localhost -u root -p123456 ...
- Linux下进程隐藏的方法及其对抗
零.背景 在应急响应中,经常碰到ps命令和top命令查不到恶意进程(异常进程)的情况,会对应急响应造成很大的影响.轻则浪费时间,重则排查不出问题,让黑客逍遥法外.所以这篇博客研究学习如何对抗linux ...