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;
}
目录
相关文章
|
5月前
|
域名解析 网络协议 网络安全
SSL证书验证全攻略:DNS/HTTP/手动解析怎么选?
SSL证书在网络安全中至关重要,1Panel提供三种验证方式:DNS验证、HTTP验证和手动解析。DNS验证便捷,适合CDN网站;HTTP验证快速,需服务器在线;手动解析灵活,但操作复杂。根据需求选择合适确认方式,定期检查证书状态。
660 2
|
7月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
679 29
|
安全 网络协议 应用服务中间件
AJP Connector:深入解析及在Apache HTTP Server中的应用
【9月更文挑战第6天】在Java Web应用开发中,Tomcat作为广泛使用的Servlet容器,经常与Apache HTTP Server结合使用,以提供高效、稳定的Web服务。而AJP Connector(Apache JServ Protocol Connector)作为连接Tomcat和Apache HTTP Server的重要桥梁,扮演着至关重要的角色
382 2
HTTP状态码解析:在Haskell中判断响应成功与否
HTTP状态码解析:在Haskell中判断响应成功与否
|
8月前
|
缓存 安全 网络安全
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
本文详细介绍了HTTP、HTTPS和SOCKS5三种代理协议的特点、优缺点以及适用场景。通过对比和分析,可以根据具体需求选择最合适的代理协议。希望本文能帮助您更好地理解和应用代理协议,提高网络应用的安全性和性能。
419 17
|
9月前
|
安全 网络协议 网络安全
解析HTTP代理服务器不稳定致使掉线的关键原因
随着数字化发展,网络安全和隐私保护成为核心需求。HTTP代理服务器掉线原因主要包括:1. 网络问题,如本地网络不稳定、路由复杂;2. 服务器质量差、IP资源不稳定;3. 用户配置错误、超时或请求频率异常;4. IP失效或协议不兼容。这些问题会影响连接稳定性。
306 8
|
11月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
820 3
|
12月前
|
弹性计算 安全 API
HTTP 405 Method Not Allowed:解析与解决
本文详细解析了HTTP 405 &quot;Method Not Allowed&quot; 错误,包括其定义、常见原因、示例代码及解决方案。通过检查API文档、修改请求方法或更新服务器配置,可有效解决此错误,提升Web开发效率。
6229 2
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
304 0
深入解析 http 协议

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS