|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
[C] problema client server
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. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
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>").
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Sì.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
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?
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
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
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
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. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:05.