PDA

View Full Version : Socket : Send TCP 1Mb.Come distinguere i dati?


parisisalvo
29-09-2005, 20:05
Salve
ho 1Mb da mandare in TCP
in blocchi da 1300byte lo mando tramite una send.
while ...
{ send (blocco i-esimo da 1300byte)
}
...
...
send (3byte di stop)

Alla fine, devo mandare un pacchetto da 3byte che mi indica la fine di quel Mbyte (il prossimo Mbyte deve essere trattato in modo diverso dalla destinazione).
Il fatto è che il destinatario riceve blocchi da 1448byte, e il mittente "accorpa tutto"...anke la send di 3byte viene accorpata nell'ultima send (che non sara' da 1300 ma un po' meno).Domanda
Come faccio a dire al mittente che la send di 3byte deve essere mandata a se??
Cioe' non deve essere accorpata in eventuali dati in coda?

parisisalvo
29-09-2005, 20:13
inserendo tra il while e la send di 3byte una sleep(1)
funziona...ma la sleep è poco elegante, cioe' funziona, ma magari non mi garantisce robustezza al 100%
idee?

cionci
29-09-2005, 20:17
Perchè non immetti la dimensione dell'intero pacchetto come primo dato inviato dalla send ?

parisisalvo
29-09-2005, 22:24
SONO UN CRETINO!!!
Hai prefettamente ragione!!
Gli dico "we destinatario, vedi che ti sto mandando 1Mb preciso preciso"
quello appera arriva 1Mb + 3byte si seleziona il Mbyte e i tre byte me li filtra... :D

cionci
30-09-2005, 00:29
Inoltre i 3 byte di chiusura in fondo non servono più...