socket ip 转换函数

socket ip 转换函数
仅仅适用于ipv4的函数:
   1 : inet_addr 函数将数字和点组成的字符串转换为一个无符号长整形
      ina.sin_addr.s_addr = inet_addr("10.2.3.44")
      注意:inet_addr 返回的已经是网络字节序的了,没有必要再次调用  htonl 函数
   2 : inet_ntoa 函数接受一个sin_addr 将 sin_addr.s_addr 转换为  num.num.num.num 这样的字符串。
      注意:inet_ntoa 函数接收的是一个 sin_addr 的类型的参数,并不是一个长整形。
               inet_ntoa 返回一个字符串指针,它指向一个定义在函数 inet_ntoa 内static 类型字符串,所以对这个函数每次调用,都会改变上一次的调用结果


 1  #include  < stdio.h >
 2  #include  < stdlib.h >
 3  #include  < string .h >
 4  #include  < netinet / in .h >
 5  #include  < arpa / inet.h >
 6  int  main(){
 7     char  s[ 10 ];
 8    memset(s,  ' \0 ' sizeof (s));
 9    memcpy(s,  " 2.3.4.5 " 7 );
10 
11 
12     int  ans  =  inet_addr(s);
13    printf( " %s --> %d\n " , s, ans);
14     struct  in_addr  in ;
15     in .s_addr  =  ans;
16    printf( " %d --> %s\n " , ans, inet_ntoa( in ));
17 
18     return   0 ;
19  }
20 


输出:
2.3 . 4.5   -->   84148994
84148994   -->   2.3 . 4.5


你可能感兴趣的:(socket ip 转换函数)