Ich habe einige Fragen zur Socket-Bibliothek in C. Hier ist ein Codeausschnitt, auf den ich in meinen Fragen verweisen werde.
char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
- Wie entscheide ich, wie groß recv_buffer sein soll? Ich benutze 3000, aber es ist willkürlich.
- Was passiert, wenn
recv()
ein Paket empfangen wird, das größer als mein Puffer ist? - Wie kann ich feststellen, ob ich die gesamte Nachricht erhalten habe, ohne erneut recv aufzurufen, und sie für immer warten lassen, wenn nichts zu empfangen ist?
- Gibt es eine Möglichkeit, einen Puffer ohne festen Speicherplatz zu erstellen, damit ich ihn weiter erweitern kann, ohne befürchten zu müssen, dass ihm der Speicherplatz ausgeht? Vielleicht verwenden,
strcat
um die letzterecv()
Antwort auf den Puffer zu verketten ?
Ich weiß, dass es viele Fragen in einer gibt, aber ich würde mich über jede Antwort sehr freuen.