高性能libcurl配合epoll的curl_multi_socket_action方法使用
来源:互联网 发布:穿越火线手游淘宝商城 编辑:程序博客网 时间:2024/04/30 14:43
高性能libcurl配合epoll的curl_multi_socket_action方法使用
发布时间:February 3, 2015 // 分类: // No Comments
libcurl对大量请求连接提供了管理socket的方法,用户可使用select/poll/epoll事件管理器监控socket事件,可读写时通知libcurl读写数据,libcurl读写完成后再通知用户程序改变监听socket状态。
两个重要的设置:
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
1.当使用curl_multi_add_handle(g->multi, conn->easy)添加请求时会回调multi_timer_cb,然后调用curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0, &g->still_running)初始化请求并得到一个socket(fd)。
2.调用sock_cb回调函数,传入新建的sockfd,根据传入的what状态添加到相应的事件管理器,如封装epoll的libev或libevent。
3.当事件管理器发现socket状态改变时通过curl_multi_socket_action(g->multi, fd, action, &g->still_running)通知libcurl读写数据,然后再调用sock_cb通知事件管理器,如此反复。
libcurl官网提供的基于libev和libevent事件管理示例:
http://curl.haxx.se/libcurl/c/hiperfifo.html
http://curl.haxx.se/libcurl/c/evhiperfifo.html
- 高性能libcurl配合epoll的curl_multi_socket_action方法使用
- 采用libuv的epoll方式实现的异步高性能libcurl发送数据的方法
- libcurl 配合epoll 的异步并行server原理
- libcurl采用curl_multi_perform() + curl_multi_wait()方式实现异步高性能l发送数据的方法
- 使用epoll进行高性能网络编程
- 使用epoll进行高性能网络编程
- 使用epoll进行高性能网络编程
- 使用epoll进行高性能网络编程
- epoll高性能网络服务
- Linux网络编程--使用epoll,共享内存技术实现高性能的聊天室程序
- Linux网络编程--使用epoll,共享内存技术实现高性能的聊天室程序
- 使用epoll进行高性能网络编程(收藏)
- [转]使用epoll进行高性能网络编程
- [转]使用epoll进行高性能网络编程
- [转]使用epoll进行高性能网络编程
- 使用epoll 在 linux 上开发高性能应用服务器
- 使用epoll 在 linux 上开发高性能应用服务器
- 使用epoll+时间堆实现高性能定时器
- 关于RBM中k步对比散度算法CDK的认识
- Linux中正则表达式与文件格式化处理命令(awk/grep/sed)
- Android客户端注入及清除Cookie
- Android制作粒子爆炸特效
- 【值对象】--NSNull NULL nil
- 高性能libcurl配合epoll的curl_multi_socket_action方法使用
- 简单东西-jQuery过滤数值
- Java 线程
- logger(二):linux下syslog & syslog-ng 详解
- c++宽字符串、窄字符串 互转
- Ajax常见面试题
- ZXing生成条码二维码并输出到web页面的示例
- NSHashTable 和 NSMapTable的学习
- 多方位全面解析:如何正确地写好一个界面