Rabbitmq将本地主机更改为ip地址C ++

时间:2018-05-18 02:24:13

标签: c++ rabbitmq

快速提问。为什么我不能用IP地址替换localhost? 当我这样做只是冻结。我已经完成了java教程并且我能够做到这一点,但由于某种原因它不能在C ++中工作。

我正在使用此链接 https://github.com/RPG-18/rabbitmq-cpp-tutorials

#include

#include "SimplePocoHandler.h"

int main(void)
{
    SimplePocoHandler handler("localhost", 5672);

    AMQP::Connection connection(&handler, AMQP::Login("guest", "guest"), "/");
    AMQP::Channel channel(&connection);

    channel.onReady([&]()
    {
        if(handler.connected())
        {
            channel.publish("", "hello", "Hello World!");
            std::cout << " [x] Sent 'Hello World!'" << std::endl;
            handler.quit();
        }
    });

    handler.loop();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

RabbitMQ团队监控the rabbitmq-users mailing list,有时只回答StackOverflow上的问题。

环顾the sources几分钟后,我发现了以下内容:

查看AMQP-CPP测试here的连接构造函数。请注意,ip地址作为字符串传入,但使用Network::Ipv4Address(ip)转换为特定的类。

现在,查看SimplePocoHandler构造函数here它将主机名作为字符串并将该字符串传递给Poco::Net::SocketAddress address(host, port),然后将其用作connect的参数

因此,在您的情况下,当您将192.168.1.100作为IP地址传递时,它实际上将其用作主机名。您必须修改SimpePocoHandler构造函数以使用Network::Ipv4Address(ip),或者创建一个单独的,IP地址识别构造函数。