当前位置: 技术问答>linux和unix
gethostbyaddr函数老是返回为null 但是查看errno又说成功(success) 为什么求助 深夜求帖
来源: 互联网 发布时间:2016-05-05
本文导语: gethostbyaddr函数老是返回为null (gethostbyname也是)但是查看errno又说成功(success) 为什么 函数是这样的 int main(int args, char *argv[]) { struct hostent *sh; if(args != 2) { ...
gethostbyaddr函数老是返回为null (gethostbyname也是)但是查看errno又说成功(success) 为什么
函数是这样的
int main(int args, char *argv[]) {
struct hostent *sh;
if(args != 2) {
printf("error in paramter!n");
exit(1);
}
if((sh=gethostbyaddr(argv[1], strlen(argv[1]), AF_INET)) == NULL) {
perror("gethosterror: ");
exit(1);
}
}
大体是这样 编译成client
运行是这样:./client 127.0.0.1
按道理说我肯定能获取本机的一些信息吧 可是sh为空
结果是:gethosterror: : Success
我用的虚拟机vmware 系统是redhat9 跟这个没有什么关系吧 虽然可能跟dns有关 ,但是我是./client 127.0.0.1 链接本机 又不是外网,不用dns也行
ping 127.0.0.1 是能ping通的
可sh就是为空 null 为啥 ???求助
函数是这样的
int main(int args, char *argv[]) {
struct hostent *sh;
if(args != 2) {
printf("error in paramter!n");
exit(1);
}
if((sh=gethostbyaddr(argv[1], strlen(argv[1]), AF_INET)) == NULL) {
perror("gethosterror: ");
exit(1);
}
}
大体是这样 编译成client
运行是这样:./client 127.0.0.1
按道理说我肯定能获取本机的一些信息吧 可是sh为空
结果是:gethosterror: : Success
我用的虚拟机vmware 系统是redhat9 跟这个没有什么关系吧 虽然可能跟dns有关 ,但是我是./client 127.0.0.1 链接本机 又不是外网,不用dns也行
ping 127.0.0.1 是能ping通的
可sh就是为空 null 为啥 ???求助
|
你好像用错了吧
gethostbyaddr的第一个参数应该是一个指向struct in_addr结构的指针,所以当你输入IP字串的时候要先用inet_pton转换一下
gethostbyaddr的第一个参数应该是一个指向struct in_addr结构的指针,所以当你输入IP字串的时候要先用inet_pton转换一下