Frage zu recv



  • r = recv(socket, buffer, 256, NULL);
    

    Angenommen es sind keine neuen Daten vorhanden, dann wartet ja recv.

    Aber angenommen es sind nur 128 Bytes vorhanden.
    Wird dann bei recv solange gewartet, der ganze Buffer gefüllt wurde oder liefert der nur die verfügbaren Daten und kehrt sofort zurück?



  • Probier's doch aus - aber ich würde denken, dass sie dann auch zurückkehrt 😉



  • der zweite fall tritt ein,

    recv wartet nicht sondern liefert einfach soviel daten wie vorhanden sind.
    es kehrt sogar zurück wenn keine vorhanden sind. in diesem fall ist der rückgabewert aber nicht null sondern etwas anders (siehe hilfe)

    mit der windows funktion ioctlsocket (oder so ähnlich) und dem Parameter READ kann man bestimmen, wieviel Daten im Puffer sind.

    auf sourceforge.net nach netclass suchen,
    da gibts ne Socketklasse die hat funktionen, die solange warten, bis genügend bytes zusammengekommen sind. für linux und windows gemein.


Log in to reply