尝试使用 JAva 套接字传输文件时的无限循环



我正在尝试在 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();

你能帮我吗?

谢谢!

接收器不知道

数据何时完成,因此接收器在从套接字读取数据时被阻止,直到超时。两种解决方案:

  1. 首先发送大小并读取足够的数据(与大小相同),然后关闭跳出读取的套接字。

  2. 发送
  3. 完XML文件后,发送EOF表示文件完成,读取EOF时跳出。

最新更新