Socket Bilder verschicken via Sockets. Heap-Problem.

Diskutiere Bilder verschicken via Sockets. Heap-Problem. im Netzwerkprogrammierung Bereich.
B

BaluEtDespi

Hallo allerseits!
Im nachfolgenden Code beim Versenden vieler Bilder kommt nach wenigen erfolgreichen Annahmen ein java.lang.... HeapSpace error.
Das Buffer wird doch jeweils lokal innerhalb der Schleife angelegt. Wie kommt es zu dem Heap-Fehler?
Wäre für Hilfe wieder äußerst dankbar!

Java:
DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));

@Override
        public void run() {
            System.out.println("Testausgabe2");
            int fileNameCounter = 1;
            String outputFile;
            while(running){
                try{
                    outputFile =  "C:/Test/receivedImage" + fileNameCounter + ".jpg";
                    length = dataInputStream.readInt();
                    buffer = new byte[length];
                    for(int i = 0; i < length; i++){
                        buffer[i] = (byte)dataInputStream.read();
                    }
                    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer);
                    BufferedImage bufferedImage = ImageIO.read(byteArrayInputStream);
                    File file = new File(outputFile);
                    ImageIO.write(bufferedImage, "png", file);
                    // bis hier Test mit Bildempfang
                    fileNameCounter++;
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
 
B

Barista

Du könntest den ByteArrayInputStream weglassen.

ImageIO.read benötigt nur einen InputStream, den hast Du schon.

Außerdem ist Buffer nicht lokal in dieser Methode, dort gibt es ein Speicherloch.
 
Thema: 

Bilder verschicken via Sockets. Heap-Problem.

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben