簡體   English   中英

無法在局域網上的兩台PC之間建立連接(Windows,RabbitMQ)

[英]Unable to create connection between two PC on LAN (windows, RabbitMQ)

我正在嘗試在兩台本地PC( Windows OS )之間發送消息。 我已使用LAN連接連接到這些PC。 RabbitMQ服務器安裝在10.100.94.25 PC上。 我正在嘗試從10.100.94.28 PC創建連接。 我使用Windows命令提示符從客戶端PC(10.100.94.28) ping到我的Rabbit MQ服務器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)

我猜想5672端口是否打開。 或防火牆是否阻止了它。 感謝cantSleepNowThomas的指導。

那么,我做了什么? 我只是使用telnet檢查端口號。 該命令是telnet IP_ADDRESS PORT_NUMBER 如果無法將telnet識別為命令,則必須啟用它。 遵循以下說明:

要安裝Telnet,請按照以下說明進行操作:

  1. 單擊開始,然后選擇控制面板。
  2. 選擇程序和功能。
  3. 選擇“打開或關閉Windows功能”。
  4. 選擇“ Telnet客戶端”選項。
  5. 單擊確定。

或者, 點擊此鏈接

我能夠使用telnet localhost 5672命令獲得響應。 但不能使用telnet 10.100.94.25 5672命令。

另外,從這篇文章中我得到:

  • connection refused意味着該端口上沒有任何內容
  • accepted表示該端口正在運行
  • timeout意味着防火牆阻止了訪問

我的錯誤日志顯示java.net.ConnectException: Connection timed out: connect

因此,現在我可以確定這是防火牆問題。 然后,按照本教程打開erlang進行遠程訪問。 現在它正在工作。

要知道您的PC的IP地址,只需使用CMD鍵入ipconfig

這很可能是(Windows)防火牆問題,請確保允許連接到該端口。

使用ActiveMQ設置,通常檢查連接的方式是:

我有一個測試器EJB,它訂閱了ActiveMQ系統上的一個主題。 我啟動ActiveMQ系統,然后在另一個系統上我自己的服務器上運行EJB。 如果連接一切正常,則此EJB在ActiveMQ儀表板上顯示為使用者。 此方法可確保連接設置,而不會在建立連接時帶來任何棘手的問題。 由於ping操作正常,因此理想情況下,此測試應成功進行。

如果成功,則需要確保生產者工作正常。 如果失敗,則可以確定連接設置不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM