Java避免Socket的read等阻塞操作無限等待
1)傳送完後呼叫Socket的shutdownOutput()方法關閉輸出流,這樣對端的輸入流上的read操作就會返回-1。
注意不能呼叫socket.getInputStream().close()。這樣會導致socket被關閉。
當然如果不需要繼續在socket上進行讀操作,也可以直接關閉socket。
但是這個方法不能用於通訊雙方需要多次互動的情況。
2)傳送資料時,約定資料的首部固定位元組數為資料長度。這樣讀取到這個長度的資料後,就不繼續呼叫read方法。
3)為了防止read操作造成程式永久掛起,還可以給socket設定超時。
如果read()方法在設定時間內沒有讀取到資料,就會丟擲一個java.net.SocketTimeoutException異常。
例如下面的方法設定超時3秒。
socket.setSoTimeout(3000);
相關推薦
Java避免Socket的read等阻塞操作無限等待
1)傳送完後呼叫Socket的shutdownOutput()方法關閉輸出流,這樣對端的輸入流上的read操作就會返回-1。 注意不能呼叫socket.getInputStream().close()。這樣會導致socket被關閉。 當然如果不需要繼續在
【java】【mybatis】在使用mybatis進行批量插入,批量更新等批量操作時,切割In集合List進行分批批量操作的java中的切割代碼
lse span ati 批量更新 次數 sublist 調用 size == 紅字部分代表mybatis的批量操作調用方法: int num = 0; int maxLength = 200; in
java匯入excle表格,並且對錶格進行相應的修改,並對錶格資料進行整理,最後匯出本地表格等一系列操作
1.首先建立一個java專案 2.匯入以下jar包 3.程式碼如下 public class auto_date { private static List<List<String>> readExcel(File file) throws Exception
java導入excle表格,並且對表格進行相應的修改,並對表格數據進行整理,最後導出本地表格等一系列操作
對象 tabs stream span 指數 ring vat 14. int 1.首先創建一個java項目 2.導入以下jar包 3.代碼如下 public class auto_date { private static List<List<Strin
java平衡二叉樹的增加刪除等基本操作和程式碼實現
陣列為{1,2,3}型別的 五種型別四種調整 一、LL型: /** * 帶左子樹旋轉,適用於LL型 */ public static AvlNode rotateWithLeftChild(AvlNode n) { AvlNode k = n.left; n.left
Selenium+java 點選登入等常見操作
繼續上篇環境搭建的操作和開啟網頁操作之後 ,本篇記錄登入等基本操作 直接上程式碼: try { driver.findElement(By.id("tname")).sendKeys("xxx");//輸入賬號 &nb
Java.awt.Robot 控制滑鼠移動、鍵盤按鍵等輸入操作
Java提供的Robot類,實現了控制滑鼠、鍵盤的操作,通過它,你就可以使用程式碼來控制滑鼠移動、滑鼠按鍵、鍵盤按鍵等各種各樣你希望電腦做的操作,可以用來自動化測試等目的。 是不是很酷~~~ 匯入的包有: import java.awt.AWTException; imp
【線性表基礎】順序表和單鏈表的插入、刪除等基本操作【Java版】
本文表述了線性表及其基本操作的程式碼【Java實現】 參考書籍 :《資料結構 ——Java語言描述》/劉小晶 ,杜選主編 線性表需要的基本功能有:動態地增長或收縮;對線性表的任何資料元素進行訪問和查詢;線上性表中的任何位置進行資料元素的插入和刪除操作;求線性表中指定資料元素的前驅和後繼等等。 首先描述線性表的
DB2 建表,添加字段,刪除字段,修改字段等常用操作
varchar 查看 ble col har 同時 int 添加 建數據庫 轉載:http://blog.sina.com.cn/s/blog_67aaf4440100v01p.html,稍作修改。 --創建數據庫 create database Etp; --連接數據庫
Java Calendar 類的時間操作
highlight trac string img sni gettime rfc sim design Java Calendar 類時間操作,這也許是創建和管理日歷最簡單的一個方案,示範代碼很簡單。 演示了獲取時間,日期時間的累加和累減,以及比較。 原文地址:blo
java程序、JVM、操作系統之間的
jvm本文出自 “屌絲逆襲” 博客,請務必保留此出處http://5731674.blog.51cto.com/5721674/1928297java程序、JVM、操作系統之間的
四:Java之字符串操作String、StringBuffer和StringBuilder
equal const wstring str asi 有時 string對象 階段 stringbu string是我們經經常使用到的一個類型,事實上有時候認為敲代碼就是在重復的操作字符串,這是C的特點,在java中。jdk非常好的封裝了關於字符串的操
CentOS 6.9之LVM創建,擴容等常用操作
linux lvm 卷 分區 擴容 在系統安裝時候大多情況下有可能因為考慮不周,導致服務器空間不足問題,這時候如果沒有lvm邏輯卷管理工具的話,往往就是查找服務器大文件刪除之,或者應用遷移。但如果有了lvm邏輯卷管理,只需要新增硬盤,並將新硬盤的空間劃分到不足的分區及可,如果空間浪
Android nomedia 避免圖片等資源泄露在系統圖庫其中
cep wid 收錄 rac csdn eat 文件夾 nts 應用開發 總結 Android nomedia 避免文件泄露在系統圖庫和系統鈴聲中 在應用開發中 項目的圖片總是被系統的圖庫收錄了 避免圖片被系統圖庫收錄的發現有2個方法 第一種針對圖
selenium測試(Java)-- 一組元素操作(十一)
tro itl gen () utf-8 oot clas color doctype 利用下面的例子來編寫測試腳本 頁面代碼: <!DOCTYPE html> <html> <head> <meta http-equiv="c
【java】對數據庫操作的那些事(包含數據庫中的預處理)
exception main exc 獲取 bat dba else .class 可維護 一、連接問題 前面剛介紹了怎麽連接數據庫,也寫了對應的模板。可是它的可維護性很差。那麽怎麽解決問題呢? 首先寫一個配置文件jdbc.properties <s
java與javascript對cookie操作的工具類
check cells ram tco expire turn get servle request Java對cookie的操作 package cn.utils; import java.util.HashMap; import java.util.Map;
【java 文件讀寫操作】 生成隨機數,寫入txt,然後從txt中讀出
進行 rac 直接 生成隨機數 catch trace buffered 代碼 tac 1.把生成的隨機數寫入到文件中 1 public static void WriterFun(){ 2 //獲得路徑 3 String filep
Java中Properties類的操作
文件中 配置文件 所有 技術分享 set nbsp str 宋體 java Java中有個比較重要的類Properties(Java.util.Properties),主要用於讀取Java的配置文件,就是像讀取數據庫賬號密碼一樣,其配置文件常為.properties文件,格
selenium-java,解決一些加了顯性等待和隱性等待都不好使的情況,以及給UI自動化加上暫停功能
event until rdo 暫停 ati ntop 面板 -1 不想 最近在UI自動化時遇到了,上一步成功操作後沒有響應的情況(動畫加載和瀏覽器加載導致實際沒有問題),導致下一步無法成功操作,所有想在嘗試2次操作後再次進行上一步操作解決這種情況導致的錯誤(其實是不想每一