您当前的位置: 首页 >  服务器

phymat.nico

暂无认证

  • 3浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[c语言 ] 用libev 写个echo服务器

phymat.nico 发布时间:2018-01-01 04:33:58 ,浏览量:3

放假了.同学都回家了,我是更情愿留久点在学校,一来学校安静,二来免得火车太挤.  这临走前的几天,放下了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 只有一个文件..呵呵

[cpp] view plain copy
  1. #include   
  2. #include   
  3. #include   
  4.   
  5. #define PORT 9999  
  6. #define BUFFER_SIZE 1024  
  7.   
  8.   
  9. void accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents);  
  10.   
  11.   
  12. void read_cb(struct ev_loop *loop, struct ev_io *watcher, int revents);  
  13.   
  14. int main()  
  15. {  
  16. struct ev_loop *loop = ev_default_loop(0);  
  17. int sd;  
  18. struct sockaddr_in addr;  
  19. int addr_len = sizeof(addr);  
  20. struct ev_io socket_accept;  
  21.   
  22. // 创建socket的写法,这里简单处理,用INADDR_ANY ,匹配任何客户端请求.这里写法都一样,没什么特别的,直接copy都可以用  
  23. if( (sd = socket(PF_INET, SOCK_STREAM, 0)) 
关注
打赏
1659628745
查看更多评论
立即登录/注册

微信扫码登录

0.0446s