无法在 LAN 上的两台 PC 之间创建连接(Windows、RabbitMQ)

Posted

技术标签:

【中文标题】无法在 LAN 上的两台 PC 之间创建连接(Windows、RabbitMQ)【英文标题】:Unable to create connection between two PC on LAN (windows, RabbitMQ) 【发布时间】:2016-08-26 06:40:09 【问题描述】:

我正在尝试在两台本地 PC (Windows 操作系统) 之间发送消息。我已使用 LAN 连接连接到这些 PC。 RabbitMQ 服务器安装在 10.100.94.25 PC 上。我正在尝试从 10.100.94.28 PC 创建连接。我使用 Windows 命令提示符从 Client PC (10.100.94.28) 对我的 rabbit MQ 服务器 PC (10.100.94.25) 执行 ping 操作。它是成功的。但是,当我尝试从代码创建连接时,它不起作用。请在下面检查我的代码和错误日志。该错误告诉我“超时错误”。我该怎么办?

我已成功发送和接收来自同一台 PC 的消息。这意味着,当我使用localhost 作为主机时,它可以完美运行。那么我在这里缺少的用于远程访问的微小触摸是什么?

connectionFactory = new ConnectionFactory();
connectionFactory.setUsername("shoshi");
connectionFactory.setPassword("shoshi");
connectionFactory.setHost("10.100.94.25");
connectionFactory.setPort(5672);
connection = connectionFactory.newConnection(); // this is 451 number line

错误:

May 01, 2016 6:00:35 PM com.chat.UI initRabbitMQ
SEVERE: null
java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:714)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:760)
    at com.chat.UI.initRabbitMQ(UI.java:451)
    at com.chat.UI.<init>(UI.java:48)
    at com.chat.UI$8.run(UI.java:405)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

【问题讨论】:

你试过telnet ip port吗? 怎么做? @cantSleepNow 打开cmd输入telnet 10.100.94.25 5672看看能不能访问端口 谢谢队友 :) @cantSleepNow 【参考方案1】:

我猜5672 端口是否打开。或者防火墙是否阻止它。感谢cantSleepNow 和Thomas 的指导。

那么,我做了什么?我只是使用telnet 检查端口号。命令是telnet IP_ADDRESS PORT_NUMBER。如果telnet 未被识别为命令,则必须启用它。请按照以下说明进行操作:

要安装 Telnet,请按照以下说明操作:

    点击开始,然后选择控制面板。 选择程序和功能。 选择打开或关闭 Windows 功能。 选择 Telnet 客户端选项。 点击确定。

或者,follow this link

我能够通过使用telnet localhost 5672 命令得到响应。但不是telnet 10.100.94.25 5672 命令。

另外,从THIS POST 我明白了:

connection refused 表示该端口上没有运行任何东西 accepted 表示该端口上正在运行某些东西 timeout 表示防火墙正在阻止访问

我的错误日志说java.net.ConnectException: Connection timed out: connect

所以,现在我确定这是防火墙问题。 然后我只需按照THIS TUTORIAL 打开erlang 进行远程访问。现在它正在工作。

要知道您电脑的 IP 地址,只需使用 CMD 输入 ipconfig

【讨论】:

这是迄今为止解决此问题的最短且有用的答案之一。非常感谢。【参考方案2】:

使用我的 ActiveMQ 设置,我通常检查我的连接的方式是:

我有一个订阅 ActiveMQ 系统上的主题的测试 EJB。我启动我的 ActiveMQ 系统,然后在另一个系统上我自己的服务器上运行 EJB。如果连接一切正常,则此 EJB 将作为使用者显示在 ActiveMQ 仪表板上。此方法可确保连接设置,而不会在设置连接时出现任何实质性问题。由于您 ping 正常,因此理想情况下该测试应该成功通过。

如果成功,您需要确保您的制作人工作正常。 如果失败,您肯定知道连接没有正确设置。

【讨论】:

【参考方案3】:

这很可能是 (Windows) 防火墙问题,请确保允许与该端口的连接。

【讨论】:

以上是关于无法在 LAN 上的两台 PC 之间创建连接(Windows、RabbitMQ)的主要内容,如果未能解决你的问题,请参考以下文章

在 NAT 后的两台计算机之间建立连接

家里两台电脑ping不通?

Xampp over Lan - CSS/JS 在重定向到本地主机时无法正常工作

TCP / IP在两台计算机之间发送数据?

XMPP 用于通过 Wi-Fi 在两台 iPad 之间交换游戏信息,好方法吗?

通过IP地址与C#聊天程序。连接不同网络中的两台计算机