我正在尝试用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();
你能帮帮我吗?
谢谢!
答案 0 :(得分:1)
接收方不知道数据何时结束,因此接收器在从套接字读取数据时被阻止,直到超时。 两个解决方案:
首先发送大小并读取足够的数据(与大小相同),然后关闭跳出读取的套接字。
完成发送xml文件后,发送EOF表示文件已完成,读取EOF时跳出。