Avatar billede knudmuhko Nybegynder
23. oktober 2008 - 11:16 Der er 1 kommentar og
1 løsning

flere billeder over en socket

Jeg var i gang med at lave et lille program der kan sende flere billeder over længere tid over en enkelt socket der ikke bliver lukket. Denne socket bliver også brugt den anden vej, men det håber jeg ikke bliver noget problem. Jeg fik det hele til at virke da jeg åbnede en ny socket ved hvert billede og lukkede bagefter. Men jeg ville gerne have at jeg ikke behøver at lukke den hver gang.
Dette er sender koden, den sender hele tiden billeder men det er kun det første der bliver modtaget:

outputStream.write(-10); // for at signalere herkommer et billede.
ImageIO.write(image, "JPEG", outputStream);

Koden for at modtage er:

InputStream inStream = socket.getInputStream();
    while (true) {
        if (inStream.read() == -10) {
            BufferedImage image = ImageIO.read(inStream);
            if (image != null) {
                imageShowable.setImage(image);
            }
        }
    }
}
Håber nogle kan hjælpe. på forhånd tak:)
Avatar billede arne_v Ekspert
23. oktober 2008 - 22:25 #1
Lav en protokol hvor du sender:

4 byte med længde
N byte med data
4 byte med længde
N byte med data
4 byte med længde
N byte med data
...

Så læser du som (pseudo kode):

while not EOF {
  read length
  allocate byte array of length
  read data
  convert byte array to image
  process image
}
Avatar billede arne_v Ekspert
28. oktober 2008 - 23:33 #2
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester