| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 301 人关注过本帖
标题:问一个有关getaddrinfo的问题
只看楼主 加入收藏
genius1wjc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-20
收藏
 问题点数:0 回复次数:0 
问一个有关getaddrinfo的问题
程序的目的是找到gets输入的主机 并打印主机名和ip ,程序通过编译运行。
代码如下
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
#include <signal.h>
#include <time.h>


int main(void){
int rc;
char name[20]; //得到的主机名
char ipbuf[16]; // 保存ip地址
struct addrinfo hints,*addr;
memset(&hints,0,sizeof(struct addrinfo));
hints.ai_family=AF_INET;
hints.ai_flags=AI_CANONNAME | AI_ADDRCONFIG;

gets(name); //从输入得要查找的主机名
if((rc=getaddrinfo(name,NULL,&hints,&addr))==0){
do{
printf("ip: %s,host: %s\n",inet_ntop(AF_INET,addr->ai_addr,ipbuf,sizeof(ipbuf)),addr->ai_canonname);
}while((addr=addr->ai_next)!=NULL); //打印找到的主机地址和主机名
return 0;
}
printf("%d\n",rc);//检查出错时的rc值
return 0;
}


程序的问题是 不管输入的主机是非存在 都无法找到主机 返回2.0.0.0 的ip和空主机名

是不是inet_ntop用错了?请高手指点。

终端输出
genius1wjc@ubuntu:~$ gcc egdrgtf.c -o egdrgtf.o
/tmp/cco7gid0.o: In function `main':
egdrgtf.c:(.text+0x4a): warning: the `gets' function is dangerous and should not be used.
genius1wjc@ubuntu:~$ ./egdrgtf.o
www.baidu.com (这是输入)
ip: 2.0.0.0,host: www.baidu.com
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
搜索更多相关主题的帖子: getaddrinfo 
2010-12-20 23:07
快速回复:问一个有关getaddrinfo的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.093887 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved