Giriş
inet_pton metodu en yeni ve kullanmamız gereken POSIX API'si. Şekilde inet_pton'un v4 ve v6 için çalıştığı görülebilir.
Windows
Bu metod POSIX'te tanımlı ancak Windows'ta birebir tanımlı değil. Windows'taki karşılığı InetNtop
metodu.Portable kod için boost::asio kullanılabilir.
Döndürülen Değer
İşlem başarılı ise 1 döner. Başarısız ise 0 veya -1 döner. Yani sonuca <=0 diye bakmak yeterli.
Kullanım
Verilen "metin IP adresini" long'a çevirir. Hem IPv6 hem de IPv4 ile çalıştığı için inet_addr() metoduna tercih edilmelidir. Şu satırı dahil ederiz.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız
Şöyle yaparız. Yapının diğer alanlarının doldurulmasının sebebi yapının connect() metodu ile kullanılması.
inet_pton metodu en yeni ve kullanmamız gereken POSIX API'si. Şekilde inet_pton'un v4 ve v6 için çalıştığı görülebilir.
Windows
Bu metod POSIX'te tanımlı ancak Windows'ta birebir tanımlı değil. Windows'taki karşılığı InetNtop
metodu.Portable kod için boost::asio kullanılabilir.
Döndürülen Değer
İşlem başarılı ise 1 döner. Başarısız ise 0 veya -1 döner. Yani sonuca <=0 diye bakmak yeterli.
Kullanım
Verilen "metin IP adresini" long'a çevirir. Hem IPv6 hem de IPv4 ile çalıştığı için inet_addr() metoduna tercih edilmelidir. Şu satırı dahil ederiz.
#include <arpa/inet.h>
Örnek - IPv4Şöyle yaparız.
sockaddr_in remoteaddr;
const char addr[15] = "127.0.0.1";
inet_pton(AF_INET, addr, &remoteaddr.sin_addr
);
Örnek - IPv4Şöyle yaparız.
struct sockaddr_in remoteaddr;
inet_pton(AF_INET, "10.0.0.2", &remoteaddr.sin_addr);
Örnek - IPv4 + connectŞöyle yaparız
struct sockaddr_in serv_addr;
memset(&serv_addr, '0', sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(5000);
if(inet_pton(AF_INET, argv[1], &serv_addr.sin_addr)<=0)
{
printf("\n inet_pton error occured\n");
return 1;
}
if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("\n Error : Connect Failed \n");
return 1;
}
Örnek - IPv6Şöyle yaparız. Yapının diğer alanlarının doldurulmasının sebebi yapının connect() metodu ile kullanılması.
struct sockaddr_in6 remoteaddr;
remote.sin6_family = AF_INET6;
remote.sin6_port = 0;
remote.sin6_flowinfo = 0;
remote.sin6_scope_id = 0;
inet_pton(AF_INET6, "2001:470:x:x:y:y:y:dd7b", &(remote.sin6_addr));
Hiç yorum yok:
Yorum Gönder