我尝试过使用read() = -1这种方法来判断是否读完字节流
DataInputStream in = new DataInputStream(socket.getInputStream());
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
int read = 0;
while ( (read = in.read()) != -1 ) {
swapStream.write(read);
}
结果还是不行,如果socket没有接收到数据,它不会返回-1,所以这个循环就一直在等着。。直到把socket关闭才会退出循环。。
后来我使用了read(b, off, len)这个方法,还是不行
DataInputStream in = new DataInputStream(socket.getInputStream());
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
int read = 0;
byte[] buff = new byte[100];
while ( (read = in.read(buff, 0, 100)) > 0 ) {
swapStream.write(buff, 0, read);
}
请各位指教下,不胜感谢
问题补充:
其实我是这样做的
ServerSocket server = new ServerSocket();
while (true) {
socket = server.accept();
new TCPThread(socket); //新建一个线程处理字节流
}
TCPThread里的就是我上面贴的读取字节流代码,我是想用户每发送一次数据后,可以处理这些数据。然后不想发送了,才关掉socket连接