PDA

View Full Version : [C] problema client server


misterx
04-09-2013, 12:53
ciao,
ho un programma server che invia pacchetti ad un client così formati:

<inizio>, ............. contenuto del pacchetto, <fine;>

sino a quando il client riceve un pacchetto non vi sono problemi ma sembrerebbe che windows dopo l'invio del primo pacchetto "singolo", ne concateni 'n' prima di inviarli cioè:

<inizio>, ............. contenuto del pacchetto, <fine;><inizio>, ............. contenuto del pacchetto, <fine;><inizio>, ............. contenuto del pacchetto, <fine;><inizio>, ............. contenuto del pacchetto, <fine;>

e così via.

Per capire se il pacchetto che arriva è completo uso due variabili inizialmente inizializzate a zero:

if (strstr(Buf, "<inizio>")) inizio++;
if (strstr(Buf, "<fine>")) fine++;

if (inizio == 1 && fine == 1)
elaboro il pacchetto

Problema
buf può contenere 'n' pacchetti e non uno solo quindi dovrei capire se nei pacchetti che arrivano continuamente esiste <inizio> e <fine> ed eventualmente suddividerli per elaborarli.

Chiedo a chi ha già avuto un problema simile come si può risolvere.


Se non sonon stato chiaro, chiedete pure.

Oceans11
04-09-2013, 18:21
se ho capito basta che cicli su strstr(Buf, "<inizio>") e dentro il ciclo sostituisci a Buf la sottostringa a partire da strstr(Buf, "<fine>").

misterx
05-09-2013, 07:09
se ho capito basta che cicli su strstr(Buf, "<inizio>") e dentro il ciclo sostituisci a Buf la sottostringa a partire da strstr(Buf, "<fine>").

ciao,
stai ragionando lato client cioè, quello che deve elaborare i pacchetti?

Oceans11
05-09-2013, 07:19
ciao,
stai ragionando lato client cioè, quello che deve elaborare i pacchetti?

Sì.

misterx
11-09-2013, 22:40
Sì.

Quindi, io ho un buffer che si riempie all'infinito e non è detto che ogni volta contiene pacchetti completi quindi, dovrei passare il buffer ad una qualche funzione che scomponga i pacchetti e trattenga anche quelli incompleti da concatenare la volta successiva. Siccome tale problema non è nuovo, esiste una soluzione simile già scritta che tu sappia?

Oceans11
12-09-2013, 18:30
Il problema di inviare pacchetti non è sicuramente nuovo, ma non conosco soluzioni al tuo protocollo.

E' tua anche la parte server o il client si deve attenere strettamente a questo protocollo? Magari si può rendere il problema più semplice

misterx
12-09-2013, 21:24
Il problema di inviare pacchetti non è sicuramente nuovo, ma non conosco soluzioni al tuo protocollo.

E' tua anche la parte server o il client si deve attenere strettamente a questo protocollo? Magari si può rendere il problema più semplice

sia client che server fortunatamente seguono regole stabilite da me.
Però come già detto è per me un problema nuovo quello di trattare un buffer che si riempie all'infinito in tempo reale e devo "svuotarlo".
Sembra un problema simile allo streaming di audio/video.