Salut!<br><br>Din cate am inteles eu din contextul temei, eu trebuie sa fac totul asincron pe server, adica fara sa astept nimic.<br><br>1) asta inseamna ca trebuie sa folosesc fcntl ca sa fac inclusiv socketii pe car asculti non-blocanti?<br>
2) cand fac operatia de recv pe socket in server, imi este garantat ca daca clientul a trimis 100 B, atunci si serverul ii va primi pe toti 100 intr-un singur recv (avand in vedere ca fctionarea este pe localhost si nu pe o retea reala)<br>
3) legat de intrebarea 2: In implementarea protocolului meu, eu primesc comanda write (spre ex) de la client la server, primesc de la server un raspuns care imi spune daca se poate executa comanda sau a aparut o eroare si apoi trimit de la client datele ce trebuiesc scrise de server in fisier. Dupa ce serverul a primit datele si le-a scris in fisier, el va da un ack clientului pentru ca acesta sa poata iesi. <b><br>
<br>Intebarea 3</b> este de fapt: daca eu nu reusesc sa primesc toti cei 100 de bytes pe care clientul mi-i trimite, si primesc sa zicem: doar 50 de B; de unde stie serverul ca ar trebui sa mai primeasca inca 50 inainte sa trimita clientului ack, ca acesta sa poata iesi. Exista mai multe mecanisme prin care as putea sa fac recv-ul sa astepte pana primeste absolut totul (flaguri recv, while();), insa astfel as cam bloca serverul, iar in textul temei scrie ca serverul nu se poate bloca decat la wait(). So.. ce fac?. cum imi dau seama in server ca nu am primit toate datele trimise intr-un singur recv?<br clear="all">
<br>-- <br>Bogdan Doinea<br>CCNA Instructor<br><a href="http://www.ccna.ro">www.ccna.ro</a>