Completando un poco lo que dice Fernando, la función htons() y similares (htonl(), ntohs() y ntohl() ) son suficientemente listas y hacen la conversión sólo si es necesario.
Me explico. Si el entero ya está en Big Endian, la función no hace nada. Si está en Little Endian, lo convierte. Por ello es bueno que cualquier programa de socket llame siempre a estas funciones. De esta forma, el entero siempre circulará por red en formato Big Endian. También es bueno que cualquier programa que reciba el entero por red, llame a la función inversa ntohs(). De esta forma tendremos seguridad de que cualquier programa corriendo en cualquier micro se entenderá con cualquier otro programa corriendo en cualquier otro micro.
Por cierto, htons es abreviatura de "Hardware TO Network" , es decir, convierte el entero de formato hardware (little endian o big endian según el micro) a formato de red (big endian).
Se bueno.