我使用WSAGetLastError函数在使用getHostByName函数时检索失败详细信息。但是函数返回的错误代码是0042124C在文档中不可用。我是否收到了其他格式的错误代码,或者我是否以错误的方式使用了该函数?
感谢。
PS。下面的代码段
// DNS Hostname.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "DNS Hostname.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
HOSTENT* pHostDetails = NULL;
pHostDetails = gethostbyname("IE10-FLYFB1S");
if(pHostDetails)
{
int nList = 0;
CString sAddressString;
CString sSQLAddress;
CString sSQLMachine;
unsigned long addr;
while ( pHostDetails->h_addr_list[nList] )
{
addr = (*(u_long FAR *) pHostDetails->h_addr_list[nList]);
sAddressString.Format(_T("%d.%d.%d.%d"),(addr & 255),((addr >> 8) & 255),((addr >> 16) & 255),((addr >> 24) & 255));
sSQLAddress.Format(_T(" OR Machine = '%s' "),sAddressString);
sSQLMachine += sSQLAddress;
nList++;
}
cout << sSQLMachine << endl;
}
else
{
int error = WSAGetLastError();
cout << error << endl;
}
}
WSACleanup();
return nRetCode;
}
答案 0 :(得分:-1)
不推荐使用getHostByName,请改用getaddrinfo。