[so] Tema 4: eroare la trimitere pachete
cosminratiu at gmail.com
cosminratiu at gmail.com
Tue Dec 19 19:25:50 EET 2006
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.
On 12/19/06, Andreea Fulger <andreea.fulger at gmail.com> wrote:
>
> Buna! Am urmatoarea problema pe care nu am reusit sa o rezolv si de a
> carei sursa nu-mi prea dau seama.
>
> 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).
>
> 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.
>
> _______________________________________________
> 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/20061219/9cb061c0/attachment.htm
More information about the so
mailing list