首页 > 用户发贴区 > 编程问题提问区 > 关于gethostbyname问题~
2007
10-20

不知道为什么对这里渐渐有点失望~群里提了个问题~一直没人回答~或许我是菜鸟~那些高人不懈回答我的问题~在vcgood群里呆着~在php的群里却觉得让我受益非浅~里面很好的技术讨论氛围~有时别人提出的一些问题~我们同时也在提出些方案解决~在很多人提出的各种解决方案~同自己提出的解决方案对比~觉得自己有时对一个问题的理解也加深了~或许觉得以后还是继续混msdn~至少我在那里我能更好的得到学习气氛~


还是在这里把群里发过的问题再发一次~希望vcgood里还有人:


#include “winsock.h”
#include “stdio.h”
#pragma comment(lib,”wsock32.lib”)


int main(int argc, char *argv[])
{
 struct hostent *host;
 if((host=gethostbyname(“www.hao123.com”))==NULL)/*取得主机IP地址*/
 {
  fprintf(stderr,”Gethostname error, %s\n”, strerror(errno));
  exit(1);
 }
 return(1);
}


不能获取到ip地址~执行完gethostbyname函数后~host值为0×000000~也就是NULL,


为什么获取不到ip?


关于gethostbyname问题~》有 3 条评论

  1. zqc2007 说:

    真的不好意思我还没有学完

    我才学到数组,不能帮你忙!

  2. coolker 说:

    因为使用Socket的程序在使用Socket之前必须调用WSAStartup函数。
    你没有调用WSAStartup函数,所以返回NULL,
    更多资料请看
    http://www.vcgood.com/forum_posts.asp?TID=1885&PN=1&TPN=1

    代码如下:

    #include “winsock.h”
    #include “stdio.h”
    #pragma comment(lib,”wsock32.lib”)

    int main(int argc, char *argv[])
    {
     struct hostent *host;
     //加入这段话
     WORD wVersionRequested;
     WSADATA wsaData;
     int err;
     
     wVersionRequested = MAKEWORD( 1, 1 );
     
     err = WSAStartup( wVersionRequested, &wsaData );
     if ( err != 0 )
     {
      return 1;
     }
     //结束

     if((host=gethostbyname(“http://www.hao123.com“))==NULL)/*取得主机IP地址*/
     {
      fprintf(stderr,”Gethostname error, %s\n”, strerror(errno));
      exit(1);
     }
    //还有以下这段话,一定要加
     WSACleanup( );

     return(1);
    }

    群没人回答问题不是因为你菜,也不是大家不肯帮忙.而是也许大家都很忙,有什么问题可以发到BBS,会有更多人帮你的..

  3. 苏醒的世界 说:

    我也发现我范的这个低级的错误了~好久没写程序了~一下没注意到这个~

留下一个回复