繁体   English   中英

DataOutputStream异常,但PrintWriter异常

[英]Exception with DataOutputStream but not PrintWriter

我已经开发了使用套接字的基本Java客户端/服务器。 使用PrintWriter ,一切都会按预期进行。 但是,如果我将服务器输出方法更改为DataOutputStream ,则客户端上的InputStream的长度为0,并且最终超时。

服务器端

当我使用(1)时,它可以工作:

bufferOut = new PrintWriter(new BufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);                  
bufferOut.println(response);

但是当我使用(2)时不是:

bufferOut = new DataOutputStream(socket.getOutputStream());
bufferOut.write(response.getBytes("US-ASCII"));

客户端的InputStream长度为0

遇到的唯一异常是当客户端超时并关闭套接字时-服务器随后抛出中断的管道异常。

客户端

DataInputStream in = new DataInputStream(socket.getInputStream());
String read = bufferIn.readLine();

我不明白什么? 缺少什么吗? 我还能提供什么帮助?

编辑

更新的客户端:

DataInputStream dis = new DataInputStream(socket.getInputStream());
int length = dis.available();                   

// create buffer
byte[] buf = new byte[length];                  
// read the full data into the buffer
dis.readFully(buf);

Log.d(TAG,  "buffer length: "+buf.length);

// for each byte in the buffer
for (byte b:buf){
    // convert byte to char
    char c = (char)b;                      
    // append 
    message_string += c;
}

仍然无法通过(2)取回数据-logcat buf.length = 0

println()追加一个行终止符。 write()没有。 readLine()阻塞,直到读取行终止符,或者EOS或发生异常。

如果在一端使用readLine() ,则应在另一端使用BufferedInputStream.readLine(), Writer ,而不是DataOutputStream.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM