我从一个套接字向另一个套接字发送了一个文件。之后我尝试发送一条简单的消息,但这不起作用。谁能告诉我为什么吗?
发送的文件和消息:
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());
最佳答案
您在关闭输出后正在向输出流写入消息玩具。这样做应该会得到一个 IOException 异常。
此外,在写入一些二进制数据后,您将使用相同的流来写入文本数据。如果这样做,您必须在另一端找到一种方法来知道二进制数据在哪里结束以及文本数据何时开始。如果您像现在一样读取字节直到流末尾,您将读取与文本数据字节连接的二进制数据。
关于文件传输后 Java Socket 消息不可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7040568/