Frage

Verwendung von C / C ++ Socket-Programmierung, und die "Lese (socket, Puffer, BUFSIZE)" -Methode. Was genau ist der „Puffer“ Ich weiß, dass char und Byte die gleiche Sache, aber tut es ganz gleich, wie viele Elemente der Byte-Array in er hat? Ist der Puffer in der Lage sein müssen, die gesamte Nachricht, bis die Null-Zeichen zu halten?

War es hilfreich?

Lösung

BUFSIZE sollte auf die Größe des Puffers in Bytes gleich sein. () Gelesen wird aufhören zu lesen, wenn der Puffer voll ist. Hier ein Beispiel:

#define MY_BUFFER_SIZE 1024

char mybuffer[MY_BUFFER_SIZE];
int nBytes = read(sck, mybuffer, MY_BUFFER_SIZE);

Andere Tipps

Wie immer verwenden sizeof, wenn Sie die Chance haben. Mit Hilfe der eingebauten Operator sizeof, fragen Sie den Compiler die Größe einer Variablen zu berechnen, anstatt geben Sie es selbst. Dadurch verringert sich die Gefahr der Einschleppung von Fehlern, wenn die Größe der tatsächlichen Variable unterscheidet sich von dem, was Sie denken.

Also, anstatt das zu tun

#define BUFSIZE 1500
char buffer[BUFSIZE];
int n = read(sock, buffer, BUFSIZE);

Sie sollten wirklich nutzen

char buffer[1500];
int n = read(sock, buffer, sizeof buffer);

Beachten Sie, wie Sie brauchen keine Klammern um das Argument zu sizeof, es sei denn, das Argument der Name einer Art ist.

Ihre Sockets-Implementierung erfordert nicht die Puffer groß genug zu sein, die gesamte Nachricht sicher zu halten, aber es könnte praktisch sein, je nachdem, was Sie tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top