[so] Intrebari Tema 5 async i/o Windows

Daniel Flamaropol raptorclw at gmail.com
Fri Aug 7 19:15:18 EEST 2009


Salut.

1) Piuie deoarece sunt caractere netiparibile. Tema "se duce in balarii"
daca nu afisezi deoarece afisatul respectiv iti induce niste delay-uri care
ajuta tema ta sa mearga corect.

2) La fel ca mai sus. Printf-u introduce un delay care serializeaza
operatiile si le da timp sa se termine. Ai mare grija cu ce faci write.
Asigura-te ca folosesti DOAR WriteFile si functiile familiei respective.
Daca nu faci asta, o sa iti sara peste multe caractere (in special /0 si
/r/n). La fel si pentru read, bineinteles. Pentru a testa ca de la asta e,
poti sa inlocuiesti generatorul de siruri cu ceva constant ( sa pui doar "A"
de exemplu). Asa ar trebui sa mearga toate testele.

3) Tema mea se comporta la fel (testele 22/23/24 mergeau uneori da, uneori
nu pe masina de acasa). Pe checker au mers intotdeauna toate, deci nu uita
sa verifici si acolo.

Numai bine.

2009/8/7 Adrian Lascateu <adrian_lascateu at yahoo.com>

> Salut!
>
> Am si eu nevoie de putin ajutor intrucat am intalnit cateva probleme. O sa
> incerc sa le iau pe rand.
>
> 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.
>
> 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:
>
> //printf("Spotted message |%s| from %d %d %d tip %d\n",
> oc->DataBuf.buf,oc->socket,bytes,index,oc->tip);
>   oc->DataBuf.buf[bytes] = '\0';
>
> 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.
>
> 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...).
>
> Orice idei sunt binevenite ca eu nu mai stiu ce sa fac :D
>
> Multumesc mult,
> Adrian
>
>
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090807/3ecbf453/attachment.html>


More information about the so mailing list