gpt4 book ai didi

c++ - 使用 boost::asio 打洞

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:23 26 4
gpt4 key购买 nike

我试图用打洞协议(protocol)制作一个服务器客户端。所以我将我的客户端 IP 和客户端端口发送到我的服务器,当第二个用户连接时,服务器向两个客户端发送另一个客户端的 IP 和端口。所以当我有这个时,我试图在我的两个客户端之间建立连接,但我遇到了 boost::asio 错误

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'

what(): 找不到服务中止

这是我的代码

std::vector<std::string> response;

response = split(reply, ':');
std::cout << "name : " << response[0] << std::endl;
std::cout << "adresse : " << response[1] << std::endl;
std::cout << "port : " << response[2] << std::endl;

udp::resolver::query query(udp::v4(), response[0], response[1]);

std::cout << "resolved - - - -" << std::endl;

struct client *cl = new struct client();

cl->endpoint_iterator = resolver.resolve(query);
// It Crash HERE

cl->sender_endpoint = *endpoint_iterator;
cl->name = response[0];
_clients.push_back(cl);

最佳答案

检查查询的参数。

您正在打印 response[1] 作为主机地址和 response[2] 作为端口。但是您正在构建查询对象,其中 response[0] 作为主机地址,response[1] 作为端口/服务。

我怀疑“未找到服务已中止”是指您的主机名看起来不像端口号或服务名称。

参见 http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.html

关于c++ - 使用 boost::asio 打洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079278/

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