Unix Soketi - IP Adresi Fonksiyonları

Unix, IP adreslerini değiştirmenize yardımcı olmak için çeşitli işlev çağrıları sağlar. Bu işlevler, İnternet adreslerini ASCII dizeleri (insanların kullanmayı tercih ettikleri) ile ağ bayt sıralı ikili değerler (soket adres yapılarında saklanan değerler) arasında dönüştürür.

IPv4 adresleme için aşağıdaki üç işlev çağrısı kullanılır -

  • int inet_aton (const char * strptr, struct in_addr * addrptr)
  • in_addr_t inet_addr (const char * strptr)
  • char * inet_ntoa (struct in_addr inaddr)

int inet_aton (const char * strptr, struct in_addr * addrptr)

Bu işlev çağrısı, İnternet standart nokta gösteriminde belirtilen dizeyi bir ağ adresine dönüştürür ve adresi sağlanan yapıda depolar. Dönüştürülen adres Ağ Bayt Sırasına göre (soldan sağa sıralanan baytlar) olacaktır. Dize geçerliyse 1, hata durumunda 0 döndürür.

Kullanım örneği aşağıdadır -

#include <arpa/inet.h>

(...)

   int retval;
   struct in_addr addrptr
   
   memset(&addrptr, '\0', sizeof(addrptr));
   retval = inet_aton("68.178.157.132", &addrptr);

(...)

in_addr_t inet_addr (const char * strptr)

Bu işlev çağrısı, İnternet standart nokta gösteriminde belirtilen dizeyi İnternet adresi olarak kullanılmaya uygun bir tamsayı değerine dönüştürür. Dönüştürülen adres Ağ Bayt Sırasına göre (soldan sağa sıralanan baytlar) olacaktır. 32 bitlik ikili ağ baytı sıralı IPv4 adresi ve hata durumunda INADDR_NONE döndürür.

Kullanım örneği aşağıdadır -

#include <arpa/inet.h>

(...)

   struct sockaddr_in dest;

   memset(&dest, '\0', sizeof(dest));
   dest.sin_addr.s_addr = inet_addr("68.178.157.132");
   
(...)

char * inet_ntoa (struct in_addr inaddr)

Bu işlev çağrısı, belirtilen İnternet ana bilgisayar adresini İnternet standardı nokta gösterimindeki bir dizeye dönüştürür.

Kullanım örneği aşağıdadır -

#include <arpa/inet.h>

(...)

   char *ip;
   
   ip = inet_ntoa(dest.sin_addr);
   
   printf("IP Address is: %s\n",ip);
   
(...)