
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