2015-10-26 115 views
1

我試圖做一個非常基本的回聲服務器使用Java套接字,它完美地在本地工作(在同一臺計算機上同時運行服務器和客戶端),當我嘗試從另一臺計算機運行客戶端我得到異常:Java套接字,回聲服務器

Couldn't get I/O for the connection to XXX.XXX.XX.X 

XXX.XXX.XX.X是本機的IP服務器在其上運行

BTW:我的代碼在服務器和客戶端都大致是的oracle初學者教程: server client

編輯: 完整的堆棧跟蹤我得到:

java.net.ConnectException: Connection timed out: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at sockets.Client.main(Client.java:16)

+0

端口是否打開並且未被防火牆阻止? – Kayaman

+0

你能從客戶端機器ping通服務器機器嗎? – RealSkeptic

+0

我想是這樣,因爲我用它來本地測試?或沒有 ?? – isco

回答

0

我得到的異常

Couldn't get I/O for the connection to XXX.XXX.XXX.XXX 

也就是說例外。這是一個設計不佳的錯誤消息,隱藏了的例外。當你得到一個異常時,不要顯示/打印/記錄你自己設計的無意義的錯誤信息。顯示/打印/記錄異常本身,其消息,其類,它的堆棧跟蹤。

編輯:完整的堆棧跟蹤我得到:

java.net.ConnectException: Connection timed out: connect 

沒錯。這是真正的例外,它幾乎肯定意味着有一個防火牆阻止您進行所需的連接。

0

正如在評論中提到的,兩個舊電腦大呼過癮兩個不同的無線網絡供應商。 answer to a similar question提到可能的其他原因。