#include<stdio.h>
#include <arpa/inet.h>
#include <string.h>
int main(int argc, char *argv[])
{
char addr[26];
struct in_addr id;
unsigned char *p;
int i;
if(argc==1)
{
strcpy(addr,"192.168.1.1");
}
else
{
strcpy(addr,argv[1]);
}
printf("%s\n",inet_aton(addr,&id)?"IP地址有效":"IP地址无效" );
p=(unsigned char*)&id;
for (i=0; i<4; i++)
{
printf("%d\n", (int)p[i] );
}
p=inet_ntoa(id);
printf("%s\n",p);
return 0;
}
运行:
administrator@ubuntu:~$ ./tte 325.0125.01.00001
IP地址无效
205
130
4
8
205.130.4.8
administrator@ubuntu:~$ ./tte 255.255.255.255
IP地址有效
255
255
255
255
255.255.255.255
administrator@ubuntu:~$
注意,
(1)0开头的是8进制数;
(2)第二个参数空时,inet_aton可以用来测试一下网络地址的有效性
(3)inet_aton可以处理255.255.255.255(有限广播地址),但是inet_addr不行。