易截截图软件、单文件、免安装、纯绿色、仅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程序全局键盘监听事件


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

Java Type VS Hibernate Type

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

JAVA规范学习——String字面常量

package testPackage;
class Test {
public static void main(String[] args) {
String hello = "Hello", lo = "lo";
System.out.print((hello == "Hello") + " ");
System.out.print((Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo ......

java中重写equals方法

import java.util.Date;
class Dog{
 private String name;
 private Date birthday;
 
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Date getBirthday() {
  return b ......

Java线程同步示例

文章用实例代码展示了Java中多线程访问共享资源
时线程同步
的重要性。
分别通过在两个线程中同时访问(调用get_id*方法)经过同步处理(lock及Synchronized)的共享资源(tmp)及未经过同步处理的共享资源(tmp)来说明同步处理的的作用。
main中分两部分:
1)前半部分,non-synchronization部分用来测试没有做同步处理的代码 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号