我正在尝试 Hello World AMQP 的 rabbitmq-c 实现。
我从 rabbitmq-c 源代码中包含的示例中采用了一个小脚本。这是一个片段:
socket = amqp_tcp_socket_new(conn);
if (!socket) {
die("creating TCP socket");
}
status = amqp_socket_open(socket, hostname, port);
if (status) {
die(amqp_error_string2(status));
}
printf ("Error opening socket: %s\n",strerror(errno));
hostname
如果我在与 rabbitmq 服务器进程(即is )相同的主机上运行它localhost
,那么脚本会连接并发送一条由侦听器接收的消息。如果我在不同的机器上运行相同的程序并提供运行 Rabbit 的机器的主机名,那么当它尝试使用 -9 打开套接字时它会死掉,这只是“发生套接字错误”。“errno”正是EINPROGRESS
我尝试打开非阻塞套接字时所期望的。(这与我在程序成功时看到的错误相同)。
失败时,rabbitmq 服务器日志中没有显示任何内容。
如果有人能具体告诉我这里出了什么问题,我会很高兴,但我真的需要一根钓鱼竿。我不知道如何从这里的系统中获取我需要的信息,甚至不知道从哪里开始。我以前从未真正做过unix I/O。任何人都可以就调试后续步骤提出一些建议吗?