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

java socket長連接中解決read阻塞的3個(gè)辦法

 更新時(shí)間:2014年08月05日 11:31:49   投稿:junjie  
這篇文章主要介紹了java socket長連接中解決read阻塞的3個(gè)辦法,本文取了折中的一個(gè)方法,并給出代碼實(shí)例,需要的朋友可以參考下

解決的方法有3個(gè) :

1 約定發(fā)送的數(shù)據(jù)長度,比如 http的 keepAlive 就是必須依賴這個(gè)的 Content-Length
2 設(shè)置超時(shí)的時(shí)間,根據(jù)我的經(jīng)驗(yàn),只有在Socket級別設(shè)置才有效.

復(fù)制代碼 代碼如下:
Socket socket = new Socket(host,port);
socket.setSoTimeout(100); // 如果超過100毫秒還沒有數(shù)據(jù),則拋出 SocketTimeoutException

3 讓發(fā)送端發(fā)送完數(shù)據(jù)后,關(guān)閉連接。 這個(gè)在Http的操作時(shí)很常見。

(InputStream如何判斷數(shù)據(jù)已經(jīng)讀取結(jié)束)

某些時(shí)候無法修改客戶端的情況下情況一就只有pass掉了,情況二相對來說比較適合,當(dāng)阻塞后直接拋出一個(gè)異常。情況三不適合長連接,因?yàn)檎麄€(gè)通信過程中鏈路是不能中斷的,也不能調(diào)shutdown結(jié)束。其實(shí)還有第四種方法:當(dāng)讀取到某些字符就不在往下讀取了,比如讀取到byebye就break。但是這也需要改客戶端代碼。選了一種折中的辦法-設(shè)置超時(shí):

StringBuilder sb = new StringBuilder();
try {
  client.setSoTimeout(500);
  while ((a = client.getInputStream().read(buf)) != -1) {
    sb.append(new String(buf, 0, a));
    if (a != size) {
      break;
    }
  }
} catch (Exception e) {
}
System.out.println(sb);

相關(guān)文章

  • Java版AI五子棋游戲

    Java版AI五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了Java版AI五子棋游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 詳解Mybatis中萬能的Map和模糊查詢寫法

    詳解Mybatis中萬能的Map和模糊查詢寫法

    這篇文章主要介紹了Mybatis中萬能的Map和模糊查詢寫法的相關(guān)資料,幫助大家更好的理解和使用Mybatis,感興趣的朋友可以了解下
    2021-03-03
  • Java序列化中子類、父類構(gòu)造函數(shù)問題實(shí)例分析

    Java序列化中子類、父類構(gòu)造函數(shù)問題實(shí)例分析

    這篇文章主要介紹了Java序列化中子類、父類構(gòu)造函數(shù)問題,結(jié)合實(shí)例形式分析了java父類與子類構(gòu)造函數(shù)中序列化接口調(diào)用相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • JSON.toJSONString()空字段不忽略修改的問題

    JSON.toJSONString()空字段不忽略修改的問題

    這篇文章主要介紹了JSON.toJSONString()空字段不忽略修改的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot設(shè)置接口超時(shí)時(shí)間的方法

    SpringBoot設(shè)置接口超時(shí)時(shí)間的方法

    這篇文章主要介紹了SpringBoot設(shè)置接口超時(shí)時(shí)間的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析

    Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析

    這篇文章主要介紹了Mybatis-Plus多表關(guān)聯(lián)查詢的使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 詳細(xì)分析Java Lambda表達(dá)式

    詳細(xì)分析Java Lambda表達(dá)式

    這篇文章主要介紹了Java Lambda表達(dá)式的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 初識Spring Boot框架和快速入門

    初識Spring Boot框架和快速入門

    這篇文章主要介紹了初識Spring Boot框架學(xué)習(xí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Maven安裝過程圖文詳解

    Maven安裝過程圖文詳解

    這篇文章主要介紹了Maven安裝過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-07-07
  • java 遍歷MAP的幾種方法示例代碼

    java 遍歷MAP的幾種方法示例代碼

    本文主要介紹java 遍歷MAP的知識資料,這里整理幾種方法及實(shí)現(xiàn)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09

最新評論

云霄县| 荔波县| 弥勒县| 栾城县| 正镶白旗| 黄冈市| 绍兴县| 通辽市| 湖北省| 增城市| 富民县| 吴江市| 象州县| 胶南市| 二连浩特市| 安仁县| 小金县| 安化县| 朝阳市| 石嘴山市| 横山县| 泰顺县| 苏尼特右旗| 临夏县| 眉山市| 巩义市| 敦煌市| 长沙县| 介休市| 瓮安县| 安陆市| 六盘水市| 太仆寺旗| 斗六市| 厦门市| 葵青区| 赤水市| 普兰店市| 特克斯县| 吉安市| 泸溪县|