0 ){ ptr = *....">

当前位置:  技术问答>linux和unix

使用gethostbyname时候遇到的莫名其妙的输出

    来源: 互联网  发布时间:2017-05-29

    本文导语:  直接上代码(代码摘自unp卷1第十一章): #include "myunp.h" int main( int argc, char **argv ) { char *ptr, **pptr; char str[ INET_ADDRSTRLEN ]; struct hostent *hptr; while ( --argc > 0 ){ ptr = *++argv; if ( ( hptr = gethostbyname( ptr...

直接上代码(代码摘自unp卷1第十一章):

#include "myunp.h"

int main( int argc, char **argv )
{
char *ptr, **pptr;
char str[ INET_ADDRSTRLEN ];
struct hostent *hptr;

while ( --argc > 0 ){
ptr = *++argv;
if ( ( hptr = gethostbyname( ptr ) ) == NULL ){
printf("gethostbyname error for host:%s:%sn", ptr, hstrerror( h_errno ) );
continue;
}
printf("official hostname:%sn", hptr->h_name );
for ( pptr = hptr->h_aliases; *pptr != NULL; pptr++ )
printf("talias:%sn", *pptr );
switch( hptr->h_addrtype ){
case AF_INET:
pptr = hptr->h_addr_list;
for ( ; *pptr != NULL; pptr++ )
printf("taddress:%sn", *pptr );
// printf("taddress:%sn", inet_ntop( hptr->h_addrtype, *pptr, str, sizeof(str)));
break;
default:
printf("unknown address type");
break;
}
}

exit(0);
}


而程序输出:

root@ThinkPad-T430i:/home/leichaojian# ./hostent www.baidu.com
official hostname:www.baidu.com
address:(这里是乱码字符,CSDN不允许显示)a!kwww.(这里是乱码字符,CSDN不允许显示)a!lu.com
address:(这里是乱码字符,CSDN不允许显示)a!lu.com


所以,使用inet_ntop函数(我已经注释掉了)的时候,直接报异常错误了。这到底是为什么呢?

|
h_addr_list is really an array of struct in_add in disguise...

So, in order to access this array that appears to be char**, you should do:


addr_list = (struct in_addr **)he->h_addr_list;
 for(i = 0; addr_list[i] != NULL; i++) {
        printf("%s ", inet_ntoa(*addr_list[i]));
    }


As gethostbyname man page indicates, it points to the network addresses for the host (in network byte order)

    
 
 

您可能感兴趣的文章:

  • #请问nslookup和程序中使用gethostbyname为什么结果不同?
  • 程序中使用gethostbyname出现段错误
  • gethostbyname所得ip不能使用
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 怎样在使用curses字符串输出函数或字符输出函数时,隐藏光标
  • Python不使用print而直接输出二进制字符串
  • 关于unix使用参数导致脚本输出异常(与脚本内直接带参数输出结果不同)
  • 使用nohup启动不输出问题
  • systemtap 关于embedded c中输出到屏幕使用什么函数
  • 为什么使用cat输出的文本文件是中文的,使用java从文件读取出来时显示的是乱码?
  • httpd.conf中ErrorLog使用syslog-ng输出的问题
  • 使用popen来执行gcc命令,如何根据读出来的gcc的输出来判断gcc是否编译成功?
  • 有谁告诉我如何使用main中的args进行输入输出的操作?
  • ll 命令输出,使用sort排序问题
  • 在LINUX中使用C调用系统命令,怎么取得系统命令的输出?
  • who和locate命令使用后无输出
  • 无法使用管道命令或重定向标准输出
  • 我在linux下面使用printf("%f", x)怎么输出nan呢?
  • 如何在shell下使用汉字输入和输出?
  • 怎样使用重定向?我想把gcc输出的信息重定向到一个文件里面。
  • java使用for循环输出杨辉三角
  • 两个简单问题:在javaBean中能用out.println()输出页面吗?javaBean中可以使用servlet建立的session对象变量值吗?
  • 使用JSP扩展标签,可否从标签内得到一个输出参数?
  • 请问不使用framebuffer,如何输出图形
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用jdom遇到的莫名其妙的问题(有关Element.getChildren()返回类型?)
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • Office 2010 Module模式下使用VBA Addressof
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • c#中SAPI使用总结——SpVoice的使用方法
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • c/c++预处理命令预#,##使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 在div中使用css让文字底部对齐的方法
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • Python namedtuple(命名元组)使用实例
  • asp程序使用的access在Linux下如何使用!
  • MySQL Workbench的下载安装与使用教程
  • 新装的Linux使用root用户不能使用FTP?
  • nginx Windows版相关问题及使用说明
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3