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

Java 无法在LAN上的两台PC(windows、RabbitMQ)之间创建连接,java,rabbitmq,port,message-queue,firewall,Java,Rabbitmq,Port,Message Queue,Firewall,我正在尝试在两台本地PC(Windows OS)之间发送消息。我已使用局域网连接到这些电脑。RabbitMQ服务器安装在10.100.94.25PC上。我正在尝试从10.100.94.28PC创建连接。我使用windows命令提示符从客户端PC(10.100.94.28)ping到我的RabbitMQ服务器PC(10.100.94.25)。这是成功的。但是,当我尝试从代码创建连接时,它不起作用。请检查我的代码和下面的错误日志。错误告诉我“超时错误”。我该怎么办 我已经成功地从同一台PC发送和接收

我正在尝试在两台本地PC(Windows OS)之间发送消息。我已使用局域网连接到这些电脑。RabbitMQ服务器安装在10.100.94.25PC上。我正在尝试从10.100.94.28PC创建连接。我使用windows命令提示符从客户端PC(10.100.94.28)ping到我的RabbitMQ服务器PC(10.100.94.25)。这是成功的。但是,当我尝试从代码创建连接时,它不起作用。请检查我的代码和下面的错误日志。错误告诉我“超时错误”。我该怎么办

我已经成功地从同一台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)
2016年5月1日下午6:00:35 com.chat.UI initRabbitMQ
严重:空
java.net.ConnectException:连接超时:连接
位于java.net.DualStackPlainSocketImpl.waitForConnect(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
位于java.net.Socket.connect(Socket.java:579)
位于com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)
位于com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:714)
位于com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:760)
位于com.chat.UI.initRabbitMQ(UI.java:451)
在com.chat.UI.(UI.java:48)
在com.chat.UI$8.run(UI.java:405)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
在java.awt.EventQueue.access$200(EventQueue.java:103)
位于java.awt.EventQueue$3.run(EventQueue.java:694)
在java.awt.EventQueue$3.run(EventQueue.java:692)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

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

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

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

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

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

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

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

如果成功,你需要确保你的制作人工作正常。
如果出现故障,您肯定知道连接未正确设置。

我猜测
5672
端口是否打开。或者防火墙是否正在阻止它。感谢并感谢他们的指导

那么,我做了什么?我只是使用
telnet
检查端口号。该命令是
telnet IP\u ADDRESS PORT\u NUMBER
。如果
telnet
未被识别为命令,则必须启用它。请遵循以下说明:

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

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

    我可以使用
    telnet localhost 5672
    命令获得响应。但不能使用telnet 10.100.94.25 5672命令

    另外,我从中得到:

    • 连接被拒绝
      表示该端口上没有运行任何内容
    • accepted
      表示某个端口正在运行
    • 超时
      表示防火墙正在阻止访问
    我的错误日志显示
    java.net.ConnectException:Connection timed out:connect

    所以,现在我确信这是一个防火墙问题。 然后,我只需打开
    erlang
    ,通过以下方式进行远程访问。现在它正在工作

    要知道您电脑的IP地址,只需键入
    ipconfig