最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中Socket設置超時時間的兩種方式

 更新時間:2022年11月09日 14:41:26   作者:荒野大碼農  
這篇文章主要介紹了java中Socket設置超時時間的兩種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Socket設置超時時間的兩種方式

方法1

調用Socket的connct 方法打開連接,并設置連接超時時間

Socket socket = new Socket()
socket.connect(new InetSocketAddress(ip, port), 3000); //設置超時3000毫秒

以上代碼是設置Socket的連接超時時間,當連接超時時,會拋出如下異常:

在不設置連接超時時間的情況下,socket默認的超時時間應該是20毫秒左右(我試了5次大概都是20毫秒就會拋出異常)

方法2

調用Socket的setSoTimeout 方法設置io讀取/寫出超時時間

socket.setSoTimeout(5000);  //設置超時時間5000毫秒
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();

當socket創(chuàng)建的IO流讀取或寫出超過了設定時間時,就會拋出異常

java.net.SocketTimeoutException: Read timed out
  at java.net.SocketInputStream.socketRead0(Native Method)
  at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
  at java.net.SocketInputStream.read(SocketInputStream.java:171)
  at java.net.SocketInputStream.read(SocketInputStream.java:141)
  at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
  at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
  at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
  at java.io.InputStreamReader.read(InputStreamReader.java:184)
  at java.io.BufferedReader.fill(BufferedReader.java:161)
  at java.io.BufferedReader.readLine(BufferedReader.java:324)
  at java.io.BufferedReader.readLine(BufferedReader.java:389)

如果不設置setSoTimeout的話,默認的io流讀寫超時時間大概是120秒(真是相當久啊)

整理一下二者的區(qū)別

雖然兩種超時拋出的異常都是SocketTimeoutException ,但是第一種連接超時,出現這種異常一般是ip或者端口填錯了。而第二種情況能出現的話,說明連接肯定建立成功了,可能是通訊的另一端響應的過慢,導致等待數據傳達的過程中超時了。

用一個現實生活中的例子的話。第一種情況就是打電話過去沒人接,等了10秒都沒人接我就掛了。第二種情況就是電話打通了,我等了你10秒你不給我說話,那我就掛了

設置socket超時時間的那些坑

通常情況下 這樣設置socket超時時間

方式1

final Socket socket = new Socket("ip","port");//自動開始連接ip
?
socket.setSoTimeout(Constants.userRequestOutTime);//設置超時時間
OutputStream outStream = socket.getOutputStream();

方式2

? ? ? ? final Socket socket = new Socket();
? ? ? ? InetSocketAddress socketAddress = new InetSocketAddress(Constants.ip,
? ? ? ? ? ? ? ? Integer.parseInt(Constants.port));
??
? ? ? ? //設置 超時時間
? ? ? ? socket.setSoTimeout(Constants.userRequestOutTime);
? ? ? ? socket.connect(socketAddress);//開始連接ip
? ? ? ?//
? ? ? OutputStream outStream = null;
? ? ? InputStream inStream = null;

但是 發(fā)現 在服務端沒有開啟的情況下 超時時間實際是30s,不是所設置的,結果研究發(fā)現

socket.setSoTimeout設置的是讀取/輸入io流數據時的超時時間
//--
socket.connect(socketAddress, Constants.userRequestOutTime);

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳細易懂帶你了解Spring中的注解

    詳細易懂帶你了解Spring中的注解

    這篇文章主要介紹了詳細易懂帶你了解Spring中的注解,Spring的一個核心是IOC,是將Bean初始化加載到容器中,Bean是如何加載到容器的,可以使用Spring注解方式或者Spring XML配置方式,需要的朋友可以參考下
    2023-08-08
  • Spring MVC參數自動綁定List的解決方法

    Spring MVC參數自動綁定List的解決方法

    這篇文章主要為大家詳細介紹了Spring MVC參數自動綁定List的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 使用@JsonFormat的一個坑及解決

    使用@JsonFormat的一個坑及解決

    這篇文章主要介紹了使用@JsonFormat的一個坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 基于SpringBoot實現上傳2種方法工程代碼實例

    基于SpringBoot實現上傳2種方法工程代碼實例

    這篇文章主要介紹了基于SpringBoot實現上傳工程代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • maven?傳遞依賴的實現

    maven?傳遞依賴的實現

    本文主要介紹了Maven中傳遞依賴的處理方式,如scope=compile影響依賴傳遞,使用排除不需要的依賴,以及如何通過查看依賴樹解決運行時錯誤,特別是在依賴排除后可能導致的運行時缺少必需包的問題,感興趣的可以了解一下
    2024-10-10
  • java對象轉成byte數組的3種方法

    java對象轉成byte數組的3種方法

    這篇文章主要為大家詳細介紹了java對象轉成byte數組的3種方法,具有一定的參考價值,感興趣的朋友可以參考一下
    2018-06-06
  • Intellij IDEA集成JProfiler性能分析工具

    Intellij IDEA集成JProfiler性能分析工具

    作為Java程序員,性能分析是我們必須掌握的技能之一,在性能分析中,JProfiler是一款非常強大的工具,本文就來介紹一下Intellij IDEA集成JProfiler性能分析工具,就有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • SpringBoot整合EasyExcel實現批量導入導出

    SpringBoot整合EasyExcel實現批量導入導出

    這篇文章主要為大家詳細介紹了SpringBoot整合EasyExcel實現批量導入導出功能的相關知識,文中的示例代碼講解詳細,需要的小伙伴可以參考下
    2024-03-03
  • Spring核心容器之BeanDefinition解析

    Spring核心容器之BeanDefinition解析

    這篇文章主要介紹了Spring核心容器之BeanDefinition解析,Spring 將管理的對象稱之為 Bean,容器會先實例化 Bean,然后自動注入,實例化的過程就需要依賴 BeanDefinition,需要的朋友可以參考下
    2023-11-11
  • 都9102年了,你還用for循環(huán)操作集合嗎

    都9102年了,你還用for循環(huán)操作集合嗎

    這篇文章主要給大家介紹了關于java中for循環(huán)操作集合使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03

最新評論

玉环县| 逊克县| 哈尔滨市| 图们市| 连南| 桃江县| 益阳市| 特克斯县| 乌兰浩特市| 图片| 凌源市| 碌曲县| 岳普湖县| 靖边县| 德化县| 肥城市| 济源市| 鄂托克前旗| 漾濞| 湖北省| 深圳市| 闻喜县| 望江县| 德阳市| 北京市| 绥德县| 海林市| 乌兰察布市| 弥勒县| 府谷县| 天全县| 璧山县| 夹江县| 上虞市| 连云港市| 嵊泗县| 依兰县| 雅安市| 凌云县| 民权县| 鹤岗市|