程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asio客户端应用传递变量或放置相同内容的ip字符串时结果不同大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决asio客户端应用传递变量或放置相同内容的ip字符串时结果不同?

开发过程中遇到asio客户端应用传递变量或放置相同内容的ip字符串时结果不同的问题如何解决?下面主要结合日常开发的经验,给出你关于asio客户端应用传递变量或放置相同内容的ip字符串时结果不同的解决方法建议,希望对你解决asio客户端应用传递变量或放置相同内容的ip字符串时结果不同有所启发或帮助;

有些事情我无法弄清楚。
下面是来自 boost asio 的聊天客户端示例的部分代码:https://www.boost.org/doc/libs/1_70_0/doc/html/boost_asio/example/cpp11/chat/chat_client.cpp

int Tcp::clIEnt(std::string peer_ip)
{
    try
    {
        boost::asio::io_context io_context;

        tcp::resolver resolver(io_context);
        auto endpoints = resolver.resolve(peer_ip,"1975");
        
        chat_clIEnt c(io_context,endpoints);

        std::thread t([&io_context]() { io_context.run(); });
        
        char line[chat_message::max_body_length + 1];
        while (std::cin.getline(line,chat_message::max_body_length + 1))
        {
          chat_message msg;
          msg.body_length(std::strlen(linE));
          std::memcpy(msg.body(),line,msg.body_length());
          msg.encode_header();
          c.write(msg);
        }

        c.close();
        t.join();
    }
    catch (std::exception &E)
    {
        std::cerr << "Exception: " << e.what() << "\n";
    }

    return 0;
}

当 peer_ip 变量如上所述传递给解析器时,我得到: 异常:解决:找不到主机(权威)

auto endpoints = resolver.resolve(peer_ip,"1975");

如果ip地址的字符串如下所示,那么客户端工作并与服务器对话。

auto endpoints = resolver.resolve("13.58.174.105","1975");

我还尝试传递一个 const 变量和一个引用,使变量 std::move,但不知何故我的努力没有奏效。

你知道问题出在哪里,我应该怎么做吗?

TIA,
妮可

解决方法

peer_ip 变量的值是多少?如果它也是“13.58.174.105”那么那就很奇怪了。

否则就意味着主机名无法解析为 IP 地址。

如果已知 peer_ip 始终包含一个 IP 地址,则无论如何都不需要解析任何内容,而您只需解析地址即可:

std::string peer_ip = "127.0.0.1";
tcp::endpoint endpoint {
    boost::asio::ip::address_v4::from_string(peer_ip.c_str()),1975 };
,

std::string Tcp::client(std::string peer_ip) { try { boost::asio::io_context io_context; tcp::resolver 解析器(io_context);自动端点 = resolver.resolve(peer_ip,"1975"); p2p_client c(io_context,端点); std::thread t(&io_context { io_context.run(); });字符行[chat_message::max_body_length + 1]; while (std::cin.getline(line,chat_message::max_body_length + 1)) { chat_message msg; msg.body_length(std::strlen(linE)); std::memcpy(msg.body(),line,msg.body_length()); msg.encode_header(); c.写(味精); c.close(); t.join(); } catch (std::exception &E) { std::cerr

大佬总结

以上是大佬教程为你收集整理的asio客户端应用传递变量或放置相同内容的ip字符串时结果不同全部内容,希望文章能够帮你解决asio客户端应用传递变量或放置相同内容的ip字符串时结果不同所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: