Linux下IP转换工具::
#Include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
strcut sockaddr_in src;
src.sin_addr.s_addr = inet_addr("*.*.*.*"); //构建网络地址。
printf("%s\n",inet_ntoa(src.sin_addr)); //将网络地址转换成字符串。
注意::
inet_ntoa存在的问题是inet_ntoa的返回值是一个static类型的char *指针,所以会出现问题::
char *a1,a2;
src.sin_addr.s_addr = inet_addr("192.168.1.123");
a1 =inet_ntoa(src.sin_addr);
src.sin_addr.s_addr = inet_addr("192.168.1.124");
a2 = inet_ntoa(src.sin_addr);
printf("a1:%s\n",a1);
显示为:: a1:192.168.1.124
printf("a2:%s\n",a2);
显示为: a2:192.168.1.124
原因是静态的static char *
man inet_ntoa
The inet_ntoa() function converts the Internet host address in given in
network byte order to a string in standard numbers-and-dots notation.
The string is returned in a statically allocated buffer, which subse-
quent calls will overwrite.
改调用已经清楚地说明,返回的字符串使用内部的静态变量,随后的调用将恢覆盖以前的内容。
所以,你如果需要多次结果,应该没调用一次,使用strcpy复制到你的缓冲区
文章来源:
http://fengqing888.blog.163.com/blog/static/33011416201171344022967