Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22298
  • 博文数量: 12
  • 博客积分: 520
  • 博客等级: 中士
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-03 15:32
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(11)

我的朋友
最近访客

分类: Java

2009-05-04 10:39:48

    Socket newServerSocket = null;
    DataInputStream inFromServer = null;
    DataOutputStream outToServer = null;
    byte[] buff = new byte[500000];//缓冲区大小
    int size = 0;
    int len = 0;

    //建立Socket
    newServerSocket = new Socket(newServerIP, newServerPort);
    inFromServer = new DataInputStream(newServerSocket.getInputStream());//获得输入流对象

//下面的代码要放在线程里运行,否则将一直死循环
    while (inFromServer.available()==0) ;//当缓冲区中无有效数据时,等待
    //从缓冲区内读取数据,如果还有数据,则继续读
    while((len = inFromServer.available())>0){
        inFromServer.read(buff, size, len);
        size +=len;
    }
    log("receive msg from server end, size:"+ size);

对于上述代码,解决了当inFromServer中没有有效数据或不可读时调用read出错的问题,主要是对available()方法的使用。需要注意的是要把上面要求的代码放在线程里执行。
阅读(455) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~