快速提问。为什么我不能用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;
}
答案 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地址识别构造函数。