Ich habe ein Problem sehr ähnlich unten auf den Link:BufferedInputStream ByteArrayOutputStream sehr langsam
PDF to byte array and vice versa
Der Hauptunterschied ist, ich eine Socket-Verbindung über einen Serversocket Binary enthält, anstatt eine Datei zu interpretieren versuchen . Dies funktioniert wie erwartet.
jedoch das Problem, das ich habe, ist, dass dieser Prozess eine recht lange Zeit nimmt in den Speicher zu lesen, etwa 1 Minute und 30 Sekunden für 500 Byte (obwohl die Größe der einzelnen Strom massiv variieren)
Hier mein Code:
BufferedInputStream input = new BufferedInputStream(theSocket.getInputStream());
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = input.read(buffer)) != -1)
{
output.write(buffer, 0, bytesRead);
}
byte[] outputBytes = output.toByteArray();
//Continue ... and eventually close inputstream
Wenn ich log es Fortschritte in der while-Schleife innerhalb des Terminals scheint es ziemlich schnell alle Bytes protokolliert (dh erreicht das Ende des Streams), scheint aber dann Pause für eine Zeit, bevor Sie aus der While-Schleife ausbrechen und fortfahren.
Hoffnung, die Sinn macht.
Schließt der Server die Verbindung? Was Sie beschreiben, sieht so aus, als würde der Stream blockieren und auf weitere Bytes warten. –