<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-05-20 12:03 GMT+03:00 Razvan Deaconescu via so2 <span dir="ltr"><<a href="mailto:so2@cursuri.cs.pub.ro" target="_blank">so2@cursuri.cs.pub.ro</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">Georgiana Diana <<a href="mailto:geodiana93@gmail.com">geodiana93@gmail.com</a>> writes:<br>
> 2016-05-19 22:41 GMT+03:00 Razvan Deaconescu via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>>:<br>
>> Georgiana Diana via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>> writes:<br>
>> > Trecand de bind si connect si ajungand la send/sendto/sendmsg, am din<br>
>> nou o<br>
>> > intrebare:<br>
>> ><br>
>> > Este vreo diferenta intre sendmsg si sendto, in ceea ce priveste cazurile<br>
>> > de eroare ce ar trebui tratate sau campurile din struct msghdr (il voi<br>
>> nota<br>
>> > m) care sunt populate de cele doua apeluri ?<br>
>> ><br>
>> > Erorile pentru ambele as zice ca sunt urmatoarele:<br>
>> > - socket conectat, dar campul m->msg_name setat => -EISCONN, conform[3];<br>
>> > - socket neconectat, dar campul m->msg_name nesetat => -ENOTCONN,<br>
>> > conform[3];<br>
>> > - (-1) pentru erori interne, conform[3].<br>
>><br>
>> Păi nu ai nevoie de vreo implementare de sendto, folosești doar<br>
>> sendmsg. La fel, folosești doar recvmsg. Poate e ceva ce nu înțeleg din<br>
>> ce întrebi.<br>
><br>
> Dap, stiu ca toate trei functiile de send/receive sunt tratate in<br>
> sendmsg/recvmsg, dar nu mi-era foarte clar daca exista vreo diferenta in<br>
> felul in care sunt setate campurile din structurile primite ca parametru<br>
> sau daca exista vreo diferenta in codurile de eroare ce ar trebui intoarse,<br>
> in functie de functia apelata din user space, ...<br>
><br>
>> > Cat despre campurile ce vor contine mesajul efectiv, din cate inteleg din<br>
>> > [3], toate cele trei functii (send, sendmsg, sendto) lucreaza cu<br>
>> m->msg_iov<br>
>> > pentru a retine bufferul de trimis. Corect ?<br>
>><br>
>> Da.<br>
><br>
> ... , dar din cate inteleg din raspunsul tau, nu ar fi, iar diferenta<br>
> dintre apelul sendmsg si sendto din user space ar fi aceea ca folosind<br>
> sendmsg poti seta in msghdr-ul trimis si campurile de control ale mesajului<br>
> ?<br>
<br>
</div></div>Nu înțeleg ce mă întrebi. Implementările din kernel (sendmsg și recvmsg)<br>
folosesc structura de tipul msghdr.<br>
<br>
Poți presupune că toate pachetele au configurat câmpul msg_name. Dacă<br>
nu-l au, e o problemă.<br></blockquote><div><br></div><div>Exact asta intrebam, m-am lamurit :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Nu sunt convins că am ajutat cu răspunsul. Dacă e cazul, să clarifici,<br>
te rog, întrebarea.<br>
<div class="HOEnZb"><div class="h5"><br>
>> >> [3] <a href="http://linux.die.net/man/2/sendto" rel="noreferrer" target="_blank">http://linux.die.net/man/2/sendto</a><br>
<br>
Răzvan<br>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii</a></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><font color="#0000ff"><b>Georgiana Diana Ciocirdel</b></font><div>Polytechnic University of Bucharest,</div><div>Computer Science</div></div></div>
</div></div>