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出错的主要内容,如果未能解决你的问题,请参考以下文章