inet_addr()这个函数是转化成数字了 比如inet_addr(202.113.1.12):201421458
可不可以再把这个数字转换成IP形式呢? 因为我要再pingproc(char *ip)中使用这个变量
我的目的是:从命令行中提取要PING的机器地址段,然后各个处理比如一个地址段:从202.113.1.12到202.113.1.255, 先看看我的笨方法,大概是这个意思
我的困难在于如何再把数字格式转化成字符串,或者说IP的格式unsigned long i,j,k;
i=inet_addr("202.113.1.12");
j=inet_addr("202.113.1.255");for(k=i;k<=j;k++)
{
    char *ip = addrproc(k);  //addrproc()如何完成??????
    pingproc(ip);
 }  

解决方案 »

  1.   

    编写一个直接使用整形网络地址的pingproc(只需把函数中使用inet_addr返回值的地方改为直接使用整形参数)。如果你的CPU是Intel系列的,也就是整数表示低位在前,可以这样:
    i = ntohl(inet_addr("202.113.1.12"));
    j = ntohl(inet_addr("202.113.1.255"));for(k = i ; k <= j ; k++)
        pringproc(htonl(k));如果你的CPU是SUN系列的,也就是高位在前的。就这样:
    i = inet_addr("202.113.1.12");
    j = inet_addr("202.113.1.255");for(k = i ; k <= j ; k++)
        pringproc(htonl(k));
      

  2.   

    错了错了,上面最后一行改为:
    pringproc(k);
      

  3.   

    inet_ntoa就可以完成这个功能。
    原型:
    char FAR * inet_ntoa(
      struct   in_addr in  
    );成功时返回以“.”分隔的IP地址串,失败时返回NULL
      

  4.   

    哦,其实带着也无所谓,因为SUN机器上,htonl函数什么也不做。