gpt4 book ai didi

c++ - 如何将主机名转换为 boost 地址或端点?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:27 24 4
gpt4 key购买 nike

我在 Boost 之上使用 C++ Redis 库。 ( https://github.com/nekipelov/redisclient )

要连接,我必须给它一个单一的 tcp 端点:

boost::asio::ip::tcp::endpoint

或者地址+端口

boost::asio::ip::address, unsigned short

目前,我开始:

boost::asio::ip::address address = boost::asio::ip::address::from_string(someIPVariable);

并将其与端口一起传递,它工作正常并已连接。但是,我现在需要通过主机名而不是 IP 来完成。如果我只是将主机名放在上面的行中,它会抛出一个异常,因为我认为它需要一个 IP 地址。

我习惯于将连接指定为 ("IP OR Hostname", port) 所以我有点不确定这里需要什么。我检查了两者的构造函数,看是否有任何构造函数可以将主机名 + 端口转换为所需的内容,但我找不到任何东西。

最佳答案

您需要使用 tcp::resolver 进行名称解析(即 DNS 查找):

boost::asio::io_service io_service;
boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::query query("example.com", "80");
boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query);

取消引用迭代器会为您提供一个具有 tcp::endpoint 的解析器条目:

boost::asio::ip::tcp::endpoint endpoint = iter->endpoint();

关于c++ - 如何将主机名转换为 boost 地址或端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31314433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com