|
Congruente con quello che ti ho detto. Leggendo MAXSIZE byte, dici al kernel di "svuotare" la coda tcp fino ad un massimo di MAXSIZE byte. Ovviamente i pacchetti che sono arrivati fin'ora vengono "impacchettati" e letti tutti insieme dalla read().
Soluzioni possibili:
- Leggi 1 byte per volta (bleah!)
- Dividi la lettura in 2 strati: uno (quello attuale) che legge i dati e li mette in un buffer fregandosene di trovare gli '\0'; un altro che legge dal buffer, cerca la prima occorrenza di '\0' ed estrae la stringa dal buffer.
- Prima di spedire una stringa, spedisci un int indicante la sua lunghezza. Così non hai neanche necessità di inviare lo '\0' finale.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
|