zoukankan      html  css  js  c++  java
  • gethostbyname(domain) 老是返回 NULL, 凌乱了

    struct hostent *h = gethostbyname(pDomain);

    今天在写一个下载网上文件到本地的小程序,在测试时发现 gethostbyname()老是返回NULL。

    解析不了域名了。

    问题出哪了? 相关的代码是从原来写过的项目中直接复制过来了,原来的项目可以正常工作啊。

    经过10多分钟的检查,终于找到原因,忘记了: Winsock服务的初始化 -> WSAStartup()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    /*
        为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化,
        因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函数。
        */
        WORD wVersionRequested;
        WSADATA wsaData;
        int ret;
     
        //WinSock初始化
        wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本
        ret = WSAStartup(wVersionRequested, &wsaData);
        if(ret != 0)
        {
            appLog("WSAStartup() failed!");
     
            return FALSE;
        }
     
        //确认WinSock DLL支持版本2.2
        if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
        {
            appLog("Invalid WinSock version!");
            WSACleanup();
     
            return FALSE;
        }

     

    2014-06-28

  • 相关阅读:
    Git轻松入门3:远程仓库篇
    Git轻松入门2:分支篇
    Git轻松入门1:本地仓库篇
    通俗易懂的解释:什么是API
    小白都看得懂的Javadoc使用教程
    尾调用与尾递归
    要理解递归就要先理解递归:手把手教你写递归
    不复杂的空间复杂度
    不复杂的时间复杂度
    Java程序执行过程及内存机制
  • 原文地址:https://www.cnblogs.com/personnel/p/4584998.html
Copyright © 2011-2022 走看看