![](/img/trans.png)
[英]Socket connection not happening between computers present on two separate LAN networks
[英]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
端口是否打開。 或防火牆是否阻止了它。 感謝cantSleepNow和Thomas的指導。
那么,我做了什么? 我只是使用telnet
檢查端口號。 該命令是telnet IP_ADDRESS PORT_NUMBER
。 如果無法將telnet
識別為命令,則必須啟用它。 遵循以下說明:
要安裝Telnet,請按照以下說明進行操作:
或者, 點擊此鏈接
我能夠使用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.