放假了.同学都回家了,我是更情愿留久点在学校,一来学校安静,二来免得火车太挤. 这临走前的几天,放下了erlang,写了一下c. 其实只是对比下erlang 写socket服务器,和c写socket服务器的异同.
说一下libev: 点击打开链接 Libev是一个event loop:向libev注册感兴趣的events,比如Socket可读事件,libev会对所注册的事件的源进行管理,并在事件发生时触发相应的程序。 对比另外一个更加出名的libevent,这个更加先进. 小巧轻量. 源码解读就不献丑了,一堆堆宏.我功力不够去深层切入libev.官网有文档,弄成pdf了,可以下载: http://d.yun.io/Y9ziuo
说一下环境: ubuntu 11.10 ,gcc4.4.6 ,libev 4.11, code:block(vim,emacs党...莫要黑,我用CB好久了,莫要离间!!!)
官方文档是有个键盘输入的demo,网上也有几个用libev写echo sever的,感觉都写得很不错,很全面. 我还是参考他们写个简单,简陋的试一下吧.
main.c 只有一个文件..呵呵
- #include
- #include
- #include
- #define PORT 9999
- #define BUFFER_SIZE 1024
- void accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents);
- void read_cb(struct ev_loop *loop, struct ev_io *watcher, int revents);
- int main()
- {
- struct ev_loop *loop = ev_default_loop(0);
- int sd;
- struct sockaddr_in addr;
- int addr_len = sizeof(addr);
- struct ev_io socket_accept;
- // 创建socket的写法,这里简单处理,用INADDR_ANY ,匹配任何客户端请求.这里写法都一样,没什么特别的,直接copy都可以用
- if( (sd = socket(PF_INET, SOCK_STREAM, 0))
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录