MemoryGarden's Blog

努力 -----------大能猫

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 11 Stories :: 20 Comments :: 0 Trackbacks
仅仅适用于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


posted on 2011-06-16 00:06 memorygarden 阅读(2132) 评论(0)  编辑 收藏 引用 所属分类: 网络编程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理