View Full Version : [C] Svuotare la memoria del socket
Vi spiego il mio problema: sto implementando un server concorrente che deve ricevere una riga di testo da un client remoto. il testo ricevuto deve essere memorizzato in una variabile, che ovviamente non può avere dimensione infinita. il fatto è che nella variabile vengono memorizzate tante lettere quante ce ne stanno e al successivo invio di caratteri la variabile "cattura" anche le precedenti lettere che non era riuscita ad immagazzinare.
c'è un modo per svuotare il socket di ascolto oppure di usare una Readline non bloccante?
ti consiglio di usare un carattere terminatore, poi cicla finche non trovi quel carattere o finche il buffer non è vuoto
ciao
Altra possibilita': trametti una cosa del tipo
typedef struct packetTemplate
{
unsigned char length;
char* buffer; /* in realta' e' la stringa da trasmettere/ricevere */
} packetType;
(ovviamente fai la struttura packed)
Poi fai una recv di 1 byte per leggere length e quindi una recv per ricevere "length" byte.
In questo piccolo esempio ovviamente puoi trasmettere stringhe di al max 255 byte. Per qualcosa di piu' grande devi cambiare il tipo di length in unsigned short o int e usare le funzioni di conversione per l'endianity.
Per il "non bloccante": se vuoi usare un socket non bloccante devi usare fcntl e O_NONBLOCK. E a seconda di cosa ti serve fare, usare "select" o "poll" per capire quando c'e' qualcosa a disposizione sul socket.
Ciao,
Mr Hyde
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.