易截截图软件、单文件、免安装、纯绿色、仅160KB

Java Read()阻塞的一种处理方式

java.io.InputStream的read()方法描述:
        If no byte is available because the end of the stream has been reached, the value -1 is returned.
        到达流的末尾真会放回-1吗?
        文件读写中可以返回-1
      Socket通讯则有一说,很奇怪我发现c语言似乎读到数据流结尾可以得到-1;而Java中则比较难得到-1,读不到数据时候read()会一直阻塞中,从JDK1.4后很多人是用java.nio,那是另一个话题。
      读取socket流中数据,根据-1判断是不现实的(通常定义各自通讯协议),这里没有考虑网络断掉情形,直接读取数据,关键问题就是考虑什么时候退出循环,不在读取数据,否则read()阻塞。思路:用一次读1024字节衡量,最后一次没有读满或者刚好读满时候,表示流中没有数据了。
接收端代码片段:
InputStream is = socket.getInputStream();
int len = 0;
byte[] buf = new byte[1024];
StringBuffer sbf = new StringBuffer();
String temp = null;
int i = 0;
len = is.read(buf);
while(true){
temp = new String(buf,0,len);
sbf.append(temp);
if(len>=buf.length){
len = is.read(buf);
}else{
break ;
}
}


相关文档:

Java Web开发相关名词解释

Web开发中经常用到的一些名词,按同功能类型的进行分组:
1.标签:WebWork标签、JSTL、JSP标签
2.AOP 拦截器 过滤器 监听器 校验器
3.面向接口 面向切面 控制反转 依赖注入
4.单态模式 DAO模式 装饰模式
5.缓存:数据缓存 服务器端缓存 客户端缓存
6.ORM EJB[三种Bean]
7.JMS
8.MVC开发模式
9.W ......

JAVA程序全局键盘监听事件


// 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理.
Toolkit tk = Toolkit.getDefaultToolkit();
tk.addAWTEventListener(new MyAWTEventListener(), AWTEvent.KEY_EVENT_MASK);
class MyAWTEventListener implements AWTEventListener {
    private boolean controlPressed = fal ......

JAVA实现的大整数加法

public class Test{ 
  public static String addBigNum(String str1,String str2){
     //找出两字符串的长短,方便后边引用;
     String longer = str1.length() > str2.length()? str1 : str2;
     String shorter = str1.length( ......

Java Type VS Hibernate Type

Java Class Attribute Type         Hibernate Type               Possible SQL Type-Vendor Specific
Integer, int, long short &n ......

Java过滤器验证登录用户

1.首先写一个权限过滤filter类,实现Filter接口
/*首先写一个权限过滤filter*/
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号