New libevent: dns and http support

简介:

Last night Niels Provos announced the release of libevent 1.2. It comes with 2 new and useful features:

  • Non-blocking DNS resolution: previously you had to write your own, hunt down someone elses or uses threads to prevent DNS lookups from blocking your app. This came just at the right time for me as I was about to integrate someone elses non-blocking solution into my app.
  • Support for simple HTTP clients and servers: At first thought this may seem like unneeded bloat, and to many it might. I usually work on applications that lack a user interface and sometimes a simple http interface is very useful for debugging, or quickly adding some extra control to your application. This might even been robust enough to add a basic webservices like API to your application.

Non-blocking DNS example:











{
fprintf(stderr, );
exit(1);
}

{
 *addrs = addresses;
int i;
 (result != 0) {
printf();
exit(1);
}
 {
 (i = 0; i < count; i++) {
printf(, inet_ntoa(addrs[i]));
}
exit(0);
}
}

{
 (argc != 2)
usage();
event_init();
evdns_init();
evdns_resolve_ipv4(argv[1], 0, evdns_cb, NULL);
event_dispatch();
 (0);
}

http server example






{
 *buf;
buf = evbuffer_new();
 (buf == NULL)
err(1, );
evbuffer_add_printf(buf, );
evhttp_send_reply(req, HTTP_OK, , buf);
}

{
 *buf;
buf = evbuffer_new();
 (buf == NULL)
err(1, );
evbuffer_add_printf(buf, , evhttp_request_uri(req));
evhttp_send_reply(req, HTTP_OK, , buf);
}

{
 *httpd;
event_init();
httpd = evhttp_start(, 8080);

evhttp_set_cb(httpd, , root_handler, NULL);

evhttp_set_gencb(httpd, generic_handler, NULL);
event_dispatch();

evhttp_free(httpd);
 0;
}
目录
相关文章
|
2月前
|
JSON 数据格式
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
31 0
|
4月前
|
存储 网络协议
【计算机网络】HTTP 协议解析
【1月更文挑战第10天】【计算机网络】HTTP 协议解析
|
4月前
|
移动开发 JSON 监控
网络协议解析:在员工上网监控软件中实现HTTP流量分析
随着企业对员工网络活动的监控需求不断增加,开发一套能够实现HTTP流量分析的网络协议解析系统变得愈发重要。本文将深入探讨如何在员工上网监控软件中实现HTTP流量分析,通过代码示例演示关键步骤。
226 0
|
13天前
|
缓存 负载均衡 网络协议
【亮剑】一次完整的HTTP请求的重要性和详细过程
【4月更文挑战第30天】本文介绍了HTTP请求的重要性和详细过程。首先,DNS解析将域名转换为IP地址,通过递归和迭代查询找到目标服务器。接着,TCP三次握手建立连接。然后,客户端发送HTTP请求,服务器处理请求并返回响应。最后,理解这个过程有助于优化网站性能,如使用DNS缓存、HTTP/2、Keep-Alive、CDN和负载均衡等实践建议。
|
15天前
|
前端开发 API UED
AngularJS的$http服务:深入解析与进行HTTP请求的技术实践
【4月更文挑战第28天】AngularJS的$http服务是核心组件,用于发起HTTP请求与服务器通信。$http服务简化了通信过程,通过深入理解和实践,能构建高效、可靠的前端应用。
|
1月前
|
XML JSON 监控
深入解析JMeter HTTP 请求头:实战技巧
在深入研究 JMeter 的过程中,任何涉及性能测试或接口验证的专业人员都会认识到,合理配置HTTP请求头部信息是实现精确测试的关键步骤之一。不同情景下,如数据提交形式的不同(例如 JSON、XML 等),或是需要通过 HTTP 头传递特定的认证信息(如使用 JWT 或 OAuth 2.0 令牌)时,了解如何在 JMeter 中灵活设置请求头显得尤为重要。
|
1月前
|
数据采集 缓存 监控
HTTP与URL基础解析及简单示例实践
HTTP与URL基础解析及简单示例实践
|
2月前
|
安全 数据安全/隐私保护
深入解析:HTTP和HTTPS的三次握手与四次挥手
在这些握手和挥手过程中,双方交换信息,协商参数,建立或关闭连接,以保证数据的可靠传输。HTTPS在此基础上加入了数字证书验证和加密通信,增加了安全性。这些步骤确保了HTTP和HTTPS协议的通信过程的稳定和安全。
120 0
|
2月前
|
存储 安全 API
掌握 HTTP Authorization 头:关键知识点解析
在当今的互联网世界中,安全性贯穿于 web 应用的每个方面,HTTP Authorization 头的使用在这个过程中扮演着不可或缺的角色。它是 HTTP 请求中的一个重要部分,用来在客户端和服务器之间安全地传输认证信息。用途广泛,无论是浏览器还是其他客户端应用,都依赖它来验证用户的访问权限。本文旨在详细解读 HTTP Authorization 头的定义、使用方式以及不同的认证机制。
|
2月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
274 1

相关产品

  • 云解析DNS
  • 推荐镜像

    更多