|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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中读取数据时,你的程序不得不阻塞起来,但并不意味着你的程序这时什么也不能做 返回类别: 教程 上一教程: 学习笔记之 EQUALS() VS. == 和STRING对象的2种创建过程 下一教程: 使用JSP技术和JDBC技术访问基于WEB的动态数据 您可以阅读与"从SOCKET中读取数据时使用超时"相关的教程: · 和同事写了一个下午的递归读取数据库的javabean · 在JSP程序如何解决读取或向DB写入数据时的乱码问题 · 从数据库中读取一个图片并保存为一个图片文件 · JSP+BEANS实现读取数据库的例子 · 用JSP从数据库中读取图片并显示在网页上 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |