recv verhalten bei vollständigem empfangen



  • wenn ich an ein socket z.b. 30 bytes sende und ich die daten wie folgt raushole:

    int result = recv(soc, buffer, 30, 0);
    

    ist result ja 30, aber die daten wurden vollständig übertragen.
    fürht der nächste aufruf der ja keine daten mehr bekommt dann zum blockieren
    der funktion? kann ich diesen zustand auch anders als über select() abfragen?

    MfG empfänger



  • ist result ja 30

    Falsch! -1 bis 30



  • ich meine bei erfolg wenn wirklich alles ankommt



  • Dann wird recv() blockieren.

    Es gibt noch WSAASyncSelect(), dann verschickt Windows Nachrichten wenn Daten ankommen oder die Verbindung geschlossen wird, etc.
    (Dadurch werden die Sockets auch non-blocking!)

    Oder den Socket mit ioctlsocket() auf non-blocking schalten...


Log in to reply