Frage bezüglich recv



  • Hallo!

    Ich schreibe einen Server der Parameter empfängt.
    Soweit eig kein Problem jedoch:

    wenn ich jetzt zb in einen buffer[200] etwas empfange was aber auch viel weniger Zeichen haben kann weiss ich nicht ob es da zu Komplikatzionen kommen kann, da ich ja eine vordefinierte Länge von Zeichen empfangen werden.

    Wenn ich also zb schreibe recv(socket,buffer,200,0), einen 9 zeichenlangen String empfange, und dann den mit zb "123456789" vergleiche gibts dann Probleme?

    Ich weiss eine viell blöde Frage aber ich will auf Nummer sicher gehen.

    Was passiert dann genau?

    Mfg



  • Wenn Du nicht warten willst, bis der Sender fertig ist, muß entweder am Anfang der Nachricht die Länge bekanntgeben werden oder die Nachricht enthält ein vordefiniertes ENDE-Zeichen (\0) oder "ende" oder irgendwas anderes.

    while(1)
      { cnt = recv(s, ... buf...);
        if (cnt == FEHLER)
            break;
        if (cnt == 0)
          { /* closed, nicht sehr effektiv */
            break;
          }
        memmove(nachricht+index, buf, cnt);
        index += cnt;
        /* auswerten, ob nachricht bereits vollständig */
      }
    

Log in to reply