<div class="gmail_quote">2009/8/7 Adrian Lascateu <span dir="ltr"><<a href="mailto:adrian_lascateu@yahoo.com">adrian_lascateu@yahoo.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Salut!<br>
<br>
Am si eu nevoie de putin ajutor intrucat am intalnit cateva probleme. O sa incerc sa le iau pe rand.<br>
<br>
1) Daca testez cu generatorul de pe site atunci incepe sa piuie daca afisez iar daca nu afisez, tot se duce in balarii. Daca pun un generator de caractere (buffer[i] = rand()%63+48 sa zicem) atunci marea majoritate trec.</blockquote>
<div><br>Multe din caracterele alea sunt netiparibile, asa cum zice Daniel. Dar tema nu ar trebui sa depinda de
delay-uri. Daca odata merge si alta data nu, inseamna ca ceva nu e
bine. Singura problema pe care o stiu e cea scrisa cu rosu in enuntul
temei, la iesirea clientului. <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2) La testele de WRITE am observat ca mesajul meu de 1MB de la client vine in mai multe bucati de 512 la server (bytes transf 512 dar strlen arata 513!) asa ca la fiecare pun un '\0' pe ultima poz (512). Problema mare este ca am dat peste un printf fantoma:<br>
<br>
//printf("Spotted message |%s| from %d %d %d tip %d\n", oc->DataBuf.buf,oc->socket,bytes,index,oc->tip);<br>
oc->DataBuf.buf[bytes] = '\0';<br>
<br>
Daca il pun, atunci bucatile se pun cap la cap cum trebuie. Daca nu-l pun atunci mai pune inca un caracter (totalul la 64KB ajunge 65537, ca si cum ar ignora '\0') si totul se strica. <br></blockquote><div><br>Aici Daniel are dreptate: daca folosesti functii 'inteligente', care transforma EOL-urile, o sa schimbi datele.<br>
<br>Alternativ, ai putea sa nu mai testezi cu
./generate si sa rulezi manual cateva comenzi pe fisiere generate de
tine, text sau nu. Eu copiam filme de 700 MB de pe o partitie pe alta.<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
3) Si bineinteles eterna "da' pa' windows de ce merge?" Tot ce am testat pe windows (cmd simplu, nu cygwin) merge in toate combinatiile posibile. In cygwin, cateodata unele teste merg, altadata nu merg (in special 22,23...).<br>
<br>
Orice idei sunt binevenite ca eu nu mai stiu ce sa fac :D<br>
</blockquote></div><br>La testele 23/24, output-ul unui client e trimis printr-un pipe la alt client si din cauza asta datele se pot fragmenta (adica sa vina in bucati de cativa bytes in loc de fix cat buffer ai in client). Chestia asta poate expune niste race-uri in server.<br>
<br>PS: cititi mail-ul asta trimis de mine mai demult <a href="http://cursuri.cs.pub.ro/pipermail/so/2007-February/008966.html">http://cursuri.cs.pub.ro/pipermail/so/2007-February/008966.html</a> si mail-ul urmator pentru a evita greselile comune care se pot face :).<br>
<br>Cosmin.<br>