我正在尝试通过套接字传输文件的内容。在 90% 的情况下,这段代码运行良好,但有时会失败。
该连接不仅用于传输文件,还用于服务器和客户端之间基于 DataInputStream/DataOutputStream 的通信。
问题是,字节似乎卡在流中。我传输的文件将被破坏,下次我传输某些东西(例如,一个整数)时,服务器会收到与客户端发送的完全不同的东西。
请注意,我之前通过 DataOutputStream.writeInt() 发送文件的大小以确定数组的大小。这似乎运行良好。
这是在客户端发送文件的代码。我之前曾通过 FileInputStream 将文件读取到 byte[] 数组
public static void writeToStream(byte[] binary, OutputStream out) throws IOException
{
int offset = 0, left = binary.length, read;
while(left > 0)
{
if(left > 1024) read = 1024;
else read = left;
out.write(binary, offset, read);
offset += read;
left -= read;
}
out.flush();
}
在服务器端,此代码应将流中的字节复制到数组中,然后将其写入文件。
public static void readToArray(byte[] binary, InputStream in) throws IOException
{
int left = binary.length, offset = 0, read, toread;
while(left > 0)
{
if(left > 1024) toread = 1024;
else toread = left;
read = in.read(binary, offset, toread);
left -= read;
offset += read;
}
}
我真的很感谢你在这里的帮助!