文件传输后,Java Socket Message无法读取

时间:2011-08-12 13:11:05

标签: java sockets networking network-programming

我从一个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());

1 个答案:

答案 0 :(得分:2)

在关闭输出后,您正在编写消息玩具输出流。这样做你应该得到一个IOException。

此外,您在编写一些二进制数据后使用相同的流来编写文本数据。如果这样做,你必须在另一边找到一种方法来知道二进制数据的结束位置,以及文本数据何时开始。如果你像流程那样读取流的结尾之前的字节,你将读取与文本数据的字节连接的二进制数据。