in_についてaddrとinet_ntoaの使い方


struct in_addr {
  in_addr_t s_addr;
  };
構造体in_addrは32ビットのIPv 4アドレスを表す.
  in_addr_tは一般に32ビットのunsigned longである.
ここで、8ビット毎に1つのIPアドレスビットの値を表す.
例えば192.168.3.144は0 xc 0 a 80390と記載され、c 0は192、a 8は168、03は3、90は144である.
印刷時にinet_を呼び出すことができますntoa()関数はchar*タイプに変換する.
   
今度はIP_を印刷しますMULTICAST_IF(外出インタフェース作成).データ型はin_addr{}です.s_addrを印刷します.
  
  struct in_addr s;
  printf("%lu
", s.s_addr);
    
  inet_ntoa()関数の使用例:
#include <stdio.h>
#include <arpa/inet.h>

int main()
{
  in_addr_t x;

  char *z; /* well set this equal to the IP string address returned by inet_ntoa */

  char *y = (char *)&x; /* so that we can address the individual bytes */

  y[0] = 12;
  y[1] = 34;
  y[2] = 56;
  y[3] = 78; 

  z = inet_ntoa(*(struct in_addr *)&x); /* cast x as a struct in_addr */

  printf("z = %s
", z); return 0; }

出力は:z=12.34.56.78