Bir kelime (word) içindeki bayt sırası dönüşümü için farklı bilgisayarlar farklı yaklaşımlar kullanır. Bazı bilgisayarlar bir kelimenin en anlamlı baytını başa (bu "big-endian" sıralama olarak adlandırılır) ve diğerleri de sona ("little-endian" sıralama) koyar.
İnternet protokolleri ağ üzerinde aktarılan veri için genlde geçerli bir bayt sırası yaklaşımı belirlediklerinden dolayı farklı bayt sıralama yöntemleri kullanan makineler haberleşebilir. Bu
ağ bayt sırası olarak bilinir.
Bir İnternet soket bağlantısı kurulacağında sockaddr_in yapısının üyeleri olan sin_port ve sin_addr verisinin ağ bayt sırasında gösterildiğinden emin olunması gerekir. Eğer soketten gönderilen iletilerde bir tamsayı veriyi kodluyorsanız, bunu da ağ bayt sırasına göre kodlamalısınız. Eğer bunu yapmıyorsanız, yazılımınız çalışırken veya diğer makinelerle konuşurken çökebilir.
Eğer port numarası ve konak adresini almak için getservbyname, gethostbyname veya inet_addr kullanıyorsanız, değerler zaten ağ bayt sırasındadır ve bunları doğrudan sockaddr_in yapısına kopyalayabilirsiniz.
Aksi takdirde, değerleri kendiniz dönüştürmek zorunda kalırsınız.
sin_port üyesine atanacak değerleri dönüştürmek için
htons ve
ntohs kullanınız.
sin_addr üyesine atanacak IPv4 adreslerini dönüştürmek için de
htonl ve
ntohl kullanınız. (
struct in_addr ile
uint32_t veri türlerinin bir diğerine eşdeğer olduğunu hatırlayalım.) Bu işlevler
netinet/in.h başlık dosyası içinde tanımlıdır.
uint16_t htons | (uint16_t short_konak) |
işlev
Bu işlev uint16_t türündeki short_konak tamsayısını konak bayt sırasından ağ bayt sırasına dönüştürür.
uint16_t ntohs | uint16_t short_ağ) |
işlev
Bu işlev uint16_t türündeki short_ağ tamsayısını ağ bayt sırasından konak bayt sırasına dönüştürür.
uint32_t htonl | (uint32_t long_konak) |
işlev
Bu işlev uint32_t türündeki long_konak tamsayısını konak bayt sırasından ağ bayt sırasına dönüştürür.
Bu IPv4 İnternet adresleri için kullanılır.
uint32_t ntohl | (uint32_t long_ağ) |
işlev
Bu işlev uint32_t türündeki long_ağ tamsayısını ağ bayt sırasından konak bayt sırasına dönüştürür.
Bu IPv4 İnternet adresleri için kullanılır.