- 论坛徽章:
- 0
|
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()方法的使用。需要注意的是要把上面要求的代码放在线程里执行。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20181/showart_1917503.html |
|