我从一个Socket向另一个发送了一个文件。在此之后我尝试发送一条简单的消息,但这不起作用。有人可以说出原因吗?
已发送文件和消息:
byte[] buffer = new byte[16384];
InputStream inputStream = new FileInputStream(f);
OutputStream outputStream = client.getOutputStream();
int len = 0;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
client.shutdownOutput();
//Following doesnt work:
PrintWriter m_out = new PrintWriter(outputStream);
m_out.println("anfrage erhalten");
m_out.flush();
接收文件和消息:
File pdfFile = new File("marke.pdf");
OutputStream fs = new FileOutputStream(pdfFile);
OutputStream os = client.getOutputStream();
InputStream is = client.getInputStream();
byte[] buffer = new byte[16384];
int len = 0;
while ((len = is.read(buffer)) != -1) {
fs.write(buffer, 0, len);
}
fs.flush();
fs.close();
client.shutdownOutput();
// Here i will receive the Message after the file transfer, but this doesnt work!
System.out.println(br.readLine());
答案 0 :(得分:2)
在关闭输出后,您正在编写消息玩具输出流。这样做你应该得到一个IOException。
此外,您在编写一些二进制数据后使用相同的流来编写文本数据。如果这样做,你必须在另一边找到一种方法来知道二进制数据的结束位置,以及文本数据何时开始。如果你像流程那样读取流的结尾之前的字节,你将读取与文本数据的字节连接的二进制数据。