[Socket] recv() liest nicht mehr als 3 Byte am Stück

Dieses Thema im Forum "C/C++" wurde erstellt von ExRevel, 18.04.2004.

  1. #1 ExRevel, 18.04.2004
    Zuletzt bearbeitet: 18.04.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Hi,

    ich habe folgendes Problem in einem Clienten. Die Funktion recv() liest egal wieviele daten ich dem Client vom Server aus schicke maximal 3 byte am stück ein! Nun will ich gerade Dateinamen übertragen und die kommen dann immer zerhackt in 3-Buchstabenpäckchen an! Hier mal ein kleiner auszug:
    Code:
    void receive_dirlist(int sock){
    
    	int bytes;
    	char *buffer;
    
    	while(bytes != 0){
    	
    		buffer = new char[20];
    
    		bytes = recv(sock, buffer, sizeof(buffer) -1, 0);
    
    		cout << "BYTES: " << bytes << endl;
    
    		buffer[bytes] = '\0';
    		
    		cout << buffer << endl;
    	
    		delete[](buffer);
    	}
    }
    
    Ich verzweifel hier gleich, ich hoffe irgendwer hatte mal genau solche Probleme :)

    ciao Exi

    PS:

    Ich bin auch dof, hab grad selbst gesehen was sizeof(char)-1 ist! *grml* also theoretisch könnte man hier close!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Naja. Auch wenn es ein Fehler war kann recv unabhaengig der Anzahl von Bytes die du bereit bist zu speichern, beliebig viele Bytes zurueckgeben. Auch drei, oder zwei, oder nur ein byte je Aufruf. Mit dem erwarten von einer bestimmten Anzahl von bytes und diese dann mit recv erfuellt zu wissen, ist recht riskant.

    unter posix ist es deshalb oft einfacher den socket in einen stream zu binden (fdopen) und dann fread zu benutzen, welche die angegebene Anzahl von bytes (ausnahme bei fehlern), auch zusichert.

    mfg
     
  4. #3 ExRevel, 16.06.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Ok :)

    Aber das Problem ist wirklich schon sehr lange her!

    ciao
     
Thema:

[Socket] recv() liest nicht mehr als 3 Byte am Stück

Die Seite wird geladen...

[Socket] recv() liest nicht mehr als 3 Byte am Stück - Ähnliche Themen

  1. socket send() und recv() dynamisch machen?

    socket send() und recv() dynamisch machen?: Hallo, ich hantiere ein wenig mit sockets und habe bereits erfolgreich mit TCP und UDP Daten versendet. :)) Leider stört mich, dass ich es bis...