Java中Connection timed out和Connection refused的區(qū)別講解
前言:這兩個異常報出的時候,說明客戶端沒法正常連接到服務(wù)端,但是兩者還是有區(qū)別的。
1:Connection timed out
在實際開發(fā)中經(jīng)常會碰到Connection timed out
的問題
java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at ClientSocketTimeout.main(ClientSocketTimeout.java:8)
當(dāng)?shù)玫?nbsp;Connection timed out: connect 的時候表示TCP路由不正常,原因有很多,可能是服務(wù)器無法ping通,可能是服務(wù)器(防火墻等)丟棄了該請求報文包,也可能是服務(wù)器應(yīng)答太慢,又或者存在間歇性的問題(這種情況很難從日志文件中排查問題)。
2:Connection refused
當(dāng)?shù)玫?code>Connection refused: connect 異常的時候表示從本地客戶端到目標IP地址的路由是正常的,但是該目標端口沒有進程在監(jiān)聽,然后服務(wù)端拒絕掉了連接。
一個成功的tcp鏈接將會看到Syn,Syn-Ack,Ack,這也就是我們預(yù)期的TCP三次握手。當(dāng)使用tcpdump或wireshark抓包工具來探測發(fā)送過來的請求報文包時,Connection refused將會看到Syn,Rst。
Connection refused問題排查
1. 查看防火墻是否打開,如防火墻打開,端口是否開放
2. 查看服務(wù)端是否正常運行
3. 查看服務(wù)端監(jiān)聽的端口與客戶端訪問的端口是否一致
jps | grep [appname]
netstat -anp | grep [pid]
4. ping hostname, telnet hostname port
5. 檢查客戶端訪問的hostname和port是否正確
6. 檢測服務(wù)端監(jiān)聽端口是host是否使用了127.0.0.1/localhost
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- Java為什么匿名內(nèi)部類參數(shù)引用需要用final進行修飾?
- 詳解Java中IO字節(jié)流基本操作(復(fù)制文件)并測試性能
- 關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法
- Java中轉(zhuǎn)換器設(shè)計模式深入講解
- 編寫Java代碼對HDFS進行增刪改查操作代碼實例
- Java中數(shù)組在內(nèi)存中存放原理的講解
- Java多線程——之一創(chuàng)建線程的四種方法
- java集合與數(shù)組的相同點和不同點
- Java網(wǎng)絡(luò)通信中ServerSocket的設(shè)計優(yōu)化方案
- Java反射機制的講解
相關(guān)文章
Java你不了解的大數(shù)型BigInteger與BigDecimal類
這篇文章主要介紹了Java 處理超大數(shù)類型之BigInteger與BigDecimal案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2022-05-05Java構(gòu)造函數(shù)的相互調(diào)用代碼示例
這篇文章主要介紹了Java構(gòu)造函數(shù)的相互調(diào)用代碼示例,分享了兩段代碼示例,通過this關(guān)鍵字實現(xiàn)對的構(gòu)造函數(shù)的調(diào)用,具有一定參考價值,需要的朋友可以了解下。2017-11-11