为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

从socket中读取数据时使用超时

2018-04-27 3页 doc 14KB 12阅读

用户头像

is_654168

暂无简介

举报
从socket中读取数据时使用超时从socket中读取数据时使用超时 导读: 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 Soc...
从socket中读取数据时使用超时
从socket中读取数据时使用超时 导读: 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中读取数据时,你的程序不得不阻塞起来,但并不 意味着你的程序这时什么也不能做。 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中读取数据时,你 的程序不得不阻塞起来,但并不意味着你的程序这时什么也不能做。 本文转自
/
本文档为【从socket中读取数据时使用超时】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索