Avatar billede neigaard Nybegynder
18. april 2002 - 21:41 Der er 5 kommentarer og
1 løsning

Kommandoer og data på samme socket - hvad nu

Jeg har nedenstående metode (som nok skal laves om) som skriver "data" til en fil. Jeg har en socket jeg læser kommandoer (tekst) fra, og samtidigt vil jeg gerne sende en fil over denne socket. Men hvordan det? Jeg kan jo ikke koble min sockets inputstream til min fil, da den ikke lukkes når filens data er skrevet, men der fortsat kommer kommandoer ind på denne inputstream.

Nogle foreslag, skal jeg tjekke på de sendte data inden i denne metode?

[SNIP]
public synchronized void save(InputStream data) throws FileNotFoundException, IOException {
  File f = new File("file");
  FileOutputStream fos = new FileOutputStream(f);
  byte[] buffer = new byte[2048];
  int read;
  while ((read = data.read(buffer)) != -1) {
    fos.write(buffer, 0, read);
  }
  data.close();
  fos.close();
}
[/SNIP]
Avatar billede codemon Nybegynder
18. april 2002 - 23:12 #1
Jeg mener ikke du på nogen måde kan kende forskel på fil- og kommando data i en rå InputStream, du kommer nok til at lade senderen indsætte flag i streamen. Hvad med at pakke din "elementer" ind i xml-tags, det ville da vel i det mindste gøre designet mere fleksibelt.
Avatar billede neigaard Nybegynder
19. april 2002 - 00:24 #2
Njaa er ikke meget for XML i dette tilfælde, det er for "tungt".

Et flag bliver jeg helt klart nød til at have, men hvad i alverden skulle det være? Noget kort, men som jeg er sikker på ikke dukker op i en fil!?
Avatar billede jword Nybegynder
19. april 2002 - 08:35 #3
Du lukker bare din fils output når du synes den skal lukkes. Inputstream og outputstream er kun koblet sammen fordi du læser og skriver til/fra begge. Du kører så ovennævnte metode fra det øjeblik din klient ved (via kommando) at nu kommer der en fil, til filen er slut. Hvis du har en afsluttende kommando som du søge efter skal det ind i koden, og så skal denne selvfølgelig ikke skrives til filens outputstream.
Avatar billede jword Nybegynder
19. april 2002 - 08:42 #4
En god ide ville også være at sende størrelsen på filen/forsendelsen i forbindelse med den indledende kommando, så klienten ikke behøver at parse hele input efter en afsluttende sætning.
Avatar billede neigaard Nybegynder
19. april 2002 - 18:35 #5
jword - hvorfor kommenterer du alltid?
Avatar billede jword Nybegynder
20. april 2002 - 11:48 #6
her er endnu et svar :)
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