【发布时间】:2025-12-05 14:25:01
【问题描述】:
我正在尝试用 Java 传输一个 XML 文件,但是接收该文件的客户端死在一个无限循环中,我不知道如何解决它。
我用来发送文件的代码是:
FileInputStream fileInputStream = new FileInputStream(new File("file.xml"));
byte[] buffer = new byte[socket.getSendBufferSize()];
int bytesRead = 0;
while((bytesRead = fileInputStream.read(buffer)) > 0)
{
out.write(buffer, 0, bytesRead);
}
out.flush();
fileInputStream.close();
我用来接收文件的代码是:
byte[] mybytearray = new byte[1024];
File file = new File("file.xml");
FileOutputStream fileOutputStream= new FileOutputStream(file);
int bytesRead = 0;
while((bytesRead = in.read(mybytearray, 0, mybytearray.length)) > 0);
{
fileOutputStream.write(mybytearray, 0, bytesRead);
}
fileOutputStream.close();
你能帮帮我吗?
谢谢!
【问题讨论】:
-
你关闭连接/套接字吗?
-
a) 在这里看不到与套接字有任何关系。 b) 接收样本中的“in”是什么? c) 使用 IOUtils 而不是自己编写呢?
-
私有 ObjectInputStream in = = new ObjectInputStream(socket.getInputStream());私有 ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
-
我没有关闭连接,因为它在 Android 应用程序的所有活动之间共享。
-
那么你的接收者将不知道文件是完整的,因此它会阻塞并且没有完成。如果您想保持连接打开,您必须发送文件的大小,以便接收者知道您何时完成。但有一件事,我认为让连接保持打开状态并不是一个好主意......
标签: java file sockets tcp transfer