Unixソケット-IPアドレス関数
Unixには、IPアドレスの操作に役立つさまざまな関数呼び出しが用意されています。これらの関数は、インターネットアドレスをASCII文字列(人間が使用することを好むもの)とネットワークバイトオーダーのバイナリ値(ソケットアドレス構造に格納されている値)の間で変換します。
次の3つの関数呼び出しはIPv4アドレッシングに使用されます-
- 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)
この関数呼び出しは、インターネット標準のドット表記で指定された文字列をネットワークアドレスに変換し、提供された構造体にアドレスを格納します。変換されたアドレスは、ネットワークバイトオーダー(左から右に並べられたバイト)になります。文字列が有効な場合は1を返し、エラーの場合は0を返します。
以下は使用例です-
#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)
この関数呼び出しは、インターネット標準のドット表記で指定された文字列を、インターネットアドレスとして使用するのに適した整数値に変換します。変換されたアドレスは、ネットワークバイトオーダー(左から右に並べられたバイト)になります。エラーの場合、32ビットのバイナリネットワークバイトオーダーのIPv4アドレスとINADDR_NONEを返します。
以下は使用例です-
#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)
この関数呼び出しは、指定されたインターネットホストアドレスをインターネット標準のドット表記の文字列に変換します。
以下は使用例です-
#include <arpa/inet.h>
(...)
char *ip;
ip = inet_ntoa(dest.sin_addr);
printf("IP Address is: %s\n",ip);
(...)