64位Ubuntu系统下测试网络IP出错

Posted 太阳德生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了64位Ubuntu系统下测试网络IP出错相关的知识,希望对你有一定的参考价值。

#include  <stdio.h>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>  //64bit ubuntu system ,need this head file
  int  main( int  argc,  char   ** argv)
  
       char     * ptr,  ** pptr;
       struct  hostent  * hptr;
       char    str[32];
      ptr  =  argv[1];
 
       if ((hptr  =  gethostbyname(ptr))  ==  NULL)
      
          printf( "  gethostbyname error for host:%s\\n " , ptr);
           return   0 ;
      
 
      printf( " official hostname:%s\\n " ,hptr -> h_name);
       for (pptr  =  hptr -> h_aliases;  * pptr  !=  NULL; pptr ++ )
          printf( "  alias:%s\\n " , * pptr);
 
			printf( "  hptr->h_length:%d\\n " , hptr->h_length);
			printf( "  AF_INET:%d\\n " , AF_INET);
			printf( "  AF_INET6:%d\\n " , AF_INET6);
			printf( "  hptr->h_addrtype:%d\\n " , hptr->h_addrtype);
    	printf("no addr list:\\n");
    	
       switch (hptr->h_addrtype)
      
           case  AF_INET:
           case  AF_INET6:
              pptr = hptr->h_addr_list;
              for (;  *pptr != NULL; pptr++ )
                 printf( "  address:%s\\n " , inet_ntop(hptr->h_addrtype,*pptr, str,sizeof(str)));
  
                printf( "  first address: %s\\n " , inet_ntop(hptr->h_addrtype, hptr->h_addr, str,  sizeof(str)));

           break ;
           default :
              printf( " unknown address type\\n " );
           break ;
      
 
       return   0 ;
  

输入web地址查询IP,

[desheng@ubuntu:test]$ ./a.out eu-ota.3irobotix.net
 official hostname:eu-ota.3irobotix.net
   hptr->h_length:4
   hptr->AF_INET:2
   hptr->AF_INET6:10
   hptr->h_addrtype:2
 no addr list:
  address:8.209.81.208
   first address: 8.209.81.208

64位Ubuntu系统需要加入这个头文件,#include <arpa/inet.h>,否则一调用inet_ntop()函数就会返回整数,而不是string,如果直接打印就会出现段错误。

以上是关于64位Ubuntu系统下测试网络IP出错的主要内容,如果未能解决你的问题,请参考以下文章

64位Ubuntu系统下测试网络IP出错

树莓派 Ubuntu 64 位系统玩家体验版

Linux中静态IP的nameserver是啥

ubuntu14 04 64位 安装eclipse出错

linux运维Ubuntu18.04 设置网络信息(netplan之yaml文件)

linux运维Ubuntu18.04 设置网络信息(netplan之yaml文件)