[so] [Tema5][Lin] - Nelamurire
Cristian Hurezeanu
cristian.hurezeanu at gmail.com
Tue May 26 16:15:27 EEST 2015
2015-05-26 15:45 GMT+03:00 Constantin Neagu via so <so at cursuri.cs.pub.ro>:
> Totusi am reusit sa descopar ce nu mergea:
> - recv pe socket citeste numai 20 de bytes => nu citeam toata calea fisierului.
> Am observat ca datele sunt totusi acolo, un al doilea recv imediat
> dupa primul citeste si restul.
> Problema rezolvata prin folosirea read in loc de recv.
> Avand in vedere ca socket-ul este setat ca non-blocant, respect cerinta temei.
> Am incercat sa imi dau seama de unde vine limitarea,
> dar bufferele de recv si snd ale socket-ului sunt in regula, iar in
> alta parte nu stiu unde sa ma uit.
> - sendfile si send scriu pe buffer doar jumatate din dimensiunea specificata.
Daca singura problema e ca trebuie sa folosesti recv/send de mai multe
ori, nu vad problema :D.
Oricum, socketii fiind non-blocanti, trebuie sa te astepti sa citesti
mai putin decat BUFSIZ, de exemplu
(Din cate stiu, un recv pe socket non blocant iti intoarce toate
datele din buffer la momentul apelului, care e posibil sa fie
si gol).
More information about the so
mailing list