libcurl DNS查找

问题描述 投票:0回答:1

我正在将libcurl与pthreads一起使用,以对单个网站进行一些POST请求。该网站可能会随着时间而改变。我希望该程序尽可能快。因此,我想到的一件事是,首先找到网站的IP地址,然后将此IP而不是网站的URL传递给线程。

起初,您认为这是一件好事吗?因为它消除了每个连接(线程)中的DNS查找时间。

我该如何在libcurl中做到这一点?有什么功能可以找到主机名的IP?还是有其他简单的方法可以用C语言做到这一点?

c dns libcurl
1个回答
0
投票

这是您操作系统中的DNS查询系统应解决的问题。

您希望通过不进行额外的查找来提高性能,这是因为IP会随时间变化。任何查询都应该按照DNS条目设置的某些记录超时规则进行缓存。据我所知,Windows和OS X缓存请求自动开箱即用。在我的debian机器上,我发现必须为此功能启用systemd-resolved服务。不知道您的需求,可能是您所描述的最理智的通用解决方案。

使用getaddrinfo()进行此操作并在程序范围内(甚至到磁盘)将其自己缓存一段时间(如果您想要绝对控制并且不想在应用程序中对其进行硬编码,则是一个有效的解决方案。或其他类似hosts文件的文件。

© www.soinside.com 2019 - 2024. All rights reserved.