Pai write pe socketi neblocanti s-ar putea sa nu aiba loc sa scrie tot bufferul tau fara sa blocheze...si atunci scrie cat poate si intoarce cat a scris. Daca dupa ce nu a reusit sa scrie tot la un moment dat ii mai dai imediat inca un write o sa intoarca -1 si errno o sa fie EAGAIN. Solutia in cazul asta e sa pastrezi bufferul(cat mai ai de trimis) si sa activezi EPOLLOUT pe socket-ul clientului. O sa fii anuntata cu epoll_wait cand mai e loc de scris fara sa blochezi. Si cand termini de trimis ce aveai scoti EPOLLOUT.
<br><br><div><span class="gmail_quote">On 12/19/06, <b class="gmail_sendername">Andreea Fulger</b> <<a href="mailto:andreea.fulger@gmail.com">andreea.fulger@gmail.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Buna! Am urmatoarea problema pe care nu am reusit sa o rezolv si de a carei sursa nu-mi prea dau seama.<br>
<br>
In functia care trateaza semnalul de la aio_read fac trimiterea catre
client a datelor din fisier. Totul merge ok la dimensiuni mici, numai
ca atunci cand se ajunge la dimensiuni mai mari... test 18 64kb mi se
blocheaza. Am cercetat sursa erorii... si se pare ca... desi aio_return
imi intoarce 1024... cand trimit pe socket... la un moment dat, in loc
de 1024 se trimit doar 648 dupa care orice write/send intoarce numai si
numai -1. Clientul nu inchide socketul.... deci de la asta nu poate fi
eroarea (pt ca si clientul se blocheaza).<br>
<br>
E vreo problema de la socketul neblocant? Am intrebat si alti colegi
care fac similar si ei nu au intampinat probleme la a trimite pachete
de 1024 in functia care trateaza semnalul.<br>
<br>_______________________________________________<br>so mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so" target="_blank">
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br><br><br></blockquote></div><br>