国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

從socket中讀取數據時使用超時

2019-11-18 11:03:58
字體:
來源:轉載
供稿:網友

 


java 1.4在Java API加入了非阻塞I/O(non-blocking I/O),不過Java 1.3和更早的版本都不支持這樣的特性。然而,你可以用java.net.Socket類的超時屬性來獲得一些類似于非阻塞I/O的功能。

要使用超時屬性,首先你要創建一個socket,然后設置你期望的超時時間。setSoTimeout方法有一個參數,這個int型參數指定了socket在拋出一個違例前要等待的超時時間,單位是毫秒,像下面的例子:

Socket s = new Socket(server, port);
System.out.PRintln(s.getSoTimeout());
s.setSoTimeout(5000);
InputStream in = s.getInputStream();
現在我們嘗試從這個socket中讀數據。假如超過了指定的時間還讀不到任何數據,程序將拋出一個java.io.InterruptedIOException。你可以捕捉這一違例并決定是否嘗試進行另一次讀取操作:

try {
while ( (bytesRead = in.read(buffer)) != -1 ) {
// do something with the data
System.out.println
(new String(buffer, 0, bytesRead));
}
}
catch (InterruptedIOException e) {
System.err.print("timeout on read");
// 決定是否繼續讀取
}
在早于1.4的Java版本中,當從socket中讀取數據時,你的程序不得不阻塞起來,但并不意味著你的程序這時什么也不能做。




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奇台县| 星子县| 四川省| 漯河市| 大方县| 博野县| 松桃| 若羌县| 遵义市| 玉屏| 蕉岭县| 肥乡县| 维西| 巍山| 南岸区| 临江市| 邢台市| 从江县| 靖江市| 阜城县| 昭通市| 博兴县| 秀山| 舒城县| 琼中| 哈巴河县| 将乐县| 新余市| 大宁县| 淮滨县| 沽源县| 汉沽区| 霍山县| 噶尔县| 静宁县| 都兰县| 合阳县| 宁波市| 克什克腾旗| 阿拉善盟| 桂林市|