libevent 使用dns示例
时间: 2023-10-22 18:22:52 浏览: 52
以下是一个使用libevent进行DNS查询的示例代码:
```c
#include <event2/event.h>
#include <event2/dns.h>
#include <stdio.h>
void callback(int result, char type, int count, int ttl, void *addresses, void *arg) {
struct in_addr *addrs = addresses;
char buf[32];
int i;
if (result != DNS_ERR_NONE) {
printf("DNS lookup failed\n");
return;
}
for (i = 0; i < count; ++i) {
printf("%s\n", inet_ntop(AF_INET, &addrs[i], buf, sizeof(buf)));
}
}
int main(int argc, char **argv) {
struct event_base *base;
struct evdns_base *dns_base;
base = event_base_new();
dns_base = evdns_base_new(base, 1);
evdns_base_resolve_ipv4(dns_base, "www.google.com", 0, callback, NULL);
event_base_dispatch(base);
evdns_base_free(dns_base, 1);
event_base_free(base);
return 0;
}
```
该代码使用libevent创建了一个事件循环和一个DNS解析器,并使用`evdns_base_resolve_ipv4`函数异步查询`www.google.com`的IP地址。一旦查询完成,回调函数`callback`将被调用,打印出查询到的IP地址。最后,事件循环被启动并等待查询完成后退出。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)