Socket TCP : htonl e ntohl

di il
2 risposte

Socket TCP : htonl e ntohl

Ciao,
avevo aperto un topic in precedenza chiedendo aiuto per quando riguarda un programma che devo fare. Ahimè era un crossposting .

Però questo forum mi sembra pieno di gente brava da cui possa imparare qualcosa, quindi qui ora faccio una domanda un pò più specifica non inerente solo al mio progetto e quindi differente dall'altro post.

Gli endian non mi sono molto chiari. Cioè se io devo inviare un intero in rete, da quello che ho studiato devo convertiro in network byte order giusto ?
Io pensavo andasse usato htonl() in tutti i casi ci fosse stato un numero da inviare tramite rete. Ma a quanto pare erravo , poichè diverse volte mi è stato detto , ma che diavolo fai ????

In sostanza non ho capito quando devo usare htonl e quando no ..

2 Risposte

  • Re: Socket TCP : htonl e ntohl

    aeroxr1 ha scritto:


    Ciao,

    1) Gli endian non mi sono molto chiari. Cioè se io devo inviare un intero in rete, da quello che ho studiato devo convertiro in network byte order giusto ?
    2) Io pensavo andasse usato htonl() in tutti i casi ci fosse stato un numero da inviare tramite rete. Ma a quanto pare erravo , poichè diverse volte mi è stato detto , ma che diavolo fai ????

    In sostanza non ho capito quando devo usare htonl e quando no ..
    Regola base: non si usa nulla se non e' strettamente neccessario!

    E se non sai se serve o no, non e' neccessario! Quindi, non si usa.


    La cosa e' complicata: si usano SOLO se devi far parlare tra di loro macchine di tipo diverso, ad esempio computer basati su processori Intel e computer basati su processori PowerPC (esatto, quelli che una volta usava la Apple), e i dati passati devono essere interpretati[/i] dai programmi che inviano e ricevono.

    Il TCP se ne fa un baffo di che cosa passa e a che serve. Per lui sono byte in un certo ordine che deve inviare e ricevere.

    Il TCP ASSICURA che l'ORDINE dei byte venga MANTENUTO, ma che cosa siano questi byte, non gliene puo' ... de meno.
  • Re: Socket TCP : htonl e ntohl

    E fin qui mi sembra di esserci.
    Ora vi farò un esempio e voi mi fucilate dicendomi che non ho capito nulla

    Se io devo inviare un intero , per essere sicuro che l'altro macchina lo interpreti nella stessa maniera indipendentemente dal processore, non è più sicuro trasformarli in network order con la htonl e poi dopo averli ricevuti riportarli nel formato ntohl ?
Devi accedere o registrarti per scrivere nel forum
2 risposte