Avatar billede ppdk Nybegynder
09. februar 2005 - 16:52 Der er 5 kommentarer og
1 løsning

At streame en fil

Jeg har en fil, som jeg har åbnet med ifstream (fp_in), som jeg skal have smidt ud til de connectende klienter. Umiddelbart kan jeg ikke se nogle fejl, men pointen er, at de data der kommer ud til klienten ikke er dem jeg sender...

Jeg håber I evt. kan spotte en fejl, eller noget jeg har missed;

  int sendBuf = 1024;
  int bytesSent = 0;

  fp_in.seekg(0, ios::beg);

  buffer = new char[sendBuf];
  while (!fp_in.eof())
  {
    fp_in.seekg(bytesSent);
    fp_in.read(buffer, sendBuf);
    bytesSent = send(m_socket, buffer, sendBuf, 0);
  }
Avatar billede arne_v Ekspert
09. februar 2005 - 17:02 #1
Skal

bytesSent = send(m_socket, buffer, sendBuf, 0);

ikke være

bytesSent += send(m_socket, buffer, sendBuf, 0);

?
Avatar billede ppdk Nybegynder
09. februar 2005 - 17:27 #2
Jo, du har ret - og jeg har prøvet at tilrette det, så det nu ser sådan ud:

while (!fp_in.eof())
{
  fp_in.seekg(bytesSent);
  fp_in.read(buffer, sendBuf);
  bytesSent += send(m_socket, buffer, sendBuf, 0);
  printf("Bytes sent: %i\n", bytesSent);
}

Outputtet bliver selvfølgelig en masse linier, men værdien er tankevækkende;

Bytes sent: -848841524
Bytes sent: -848840500
Bytes sent: -848839476
Bytes sent: -848838452
Bytes sent: -848837428
....
Avatar billede arne_v Ekspert
09. februar 2005 - 18:36 #3
Er bytesSent initialiseret til 0 ?
Avatar billede ppdk Nybegynder
09. februar 2005 - 19:02 #4
Var den faktisk ikke - godt spottet (selvom jeg skrev det i eksemplet).
Men hvad skyldes dens lave værdig når den initialiseres uden given værdi?

(og smid da lige et svar) :)
Avatar billede arne_v Ekspert
09. februar 2005 - 19:12 #5
Unitialiserede variable i C/C++ er ikke nul men indeholder hvad den memory adresse
tilfældigvis sidst blev brugt til.

Det kan sagtens være sådan et negativt tal.
Avatar billede arne_v Ekspert
09. februar 2005 - 19:12 #6
og 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