• 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

  • 相关阅读:
    集合set
    字典
    元组
    列表
    for循环
    Windows调试2.异常产生详细流程
    双机环境搭建
    Windows调试1.WinDbg基本使用-异常基础知识
    PE基础7-HOOK练习
    PE基础6_远程线程注入-HOOK(消息-InLine-IAT)
  • 原文地址:https://www.cnblogs.com/personnel/p/4584998.html
Copyright © 2020-2023  润新知