Avatar billede dsj Nybegynder
19. juli 2003 - 13:48 Der er 1 kommentar og
1 løsning

Problem med modtagelse af data fra server

Jeg har en lille funktion som modtager indkomne data fra en server:

  function receive() {
    while (!feof($this->socket)) {
      $response .= fgets($this->socket);
    }
    return $response;
  }

Problemet er, at funktionen ikke returnerer før den til forbindelsen fastsatte timeout (10 sekunder) er udløbet. Hvis jeg sænker timeout til 1 sekund modtager jeg stadig de korrekte data.

Jeg har prøvet på serveren både at anvende \0 og \n som eof, men php reagerer åbenbart ikke på dette.

Hvordan får jeg det til at virke? og hvad går der eventuelt galt?
Avatar billede erikjacobsen Ekspert
19. juli 2003 - 14:28 #1
Du skal have serveren til at lukke forbindelsen. Jeg ved ikke hvad du læser,
men måske skal du lede efter en afslutningstekst i det du modtager og så
sende en QUIT eller selv stoppe (jeg ved som sagt ikke hvilken protokol du
bruger)
Avatar billede dsj Nybegynder
19. juli 2003 - 16:23 #2
Man kan ikke bruge feof i forbindelse med tcpstreams og så skal man vide hvor mange beskeder der kommer, så man kan læse det korrekte antal gange.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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