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

原文地址:https://www.cnblogs.com/personnel/p/4584998.html