UNIXのCプログラムでは、gethostbyname()を使用して "localhost"のようなドメインのアドレスを取得できます。どのようにgethostbyname()の結果をドット付き10進表記に変換しますか?Unix - ドメイン名のIPアドレスを取得するには?
struct hostent* pHostInfo;
long nHostAddress;
/* get IP address from name */
pHostInfo=gethostbyname("localhost");
if(!pHostInfo){
printf("Could not resolve host name\n");
return 0;
}
/* copy address into long */
memset(&nHostAddress, 0, sizeof(nHostAddress));
memcpy(&nHostAddress,pHostInfo->h_addr,pHostInfo->h_length);
nHostAddressには以下が含まれています。
16777243
私のように出力を得ることができるように、私は結果を変換するにはどうすればよい:
127.0.0.1
http://stackoverflow.com/questions/1680365/integer-to-ip-address-c – birryree
これを正しくフォーマットするだけで済みます。各バイトは1つのIPフィールドに対応している(例えば、第1バイトは「127」など) –