GethOSTBYNAME+C++问题 我用C++编写的代码连接到服务器,但是每次尝试GethOSTByNyNy时,值都被优化了,不可用。 WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { cout << "WSAStartup failed.\n"; system("pause"); return 1; } hostent *host = gethostbyname("www.example.com");

GethOSTBYNAME+C++问题 我用C++编写的代码连接到服务器,但是每次尝试GethOSTByNyNy时,值都被优化了,不可用。 WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { cout << "WSAStartup failed.\n"; system("pause"); return 1; } hostent *host = gethostbyname("www.example.com");,c++,windows,gethostbyname,C++,Windows,Gethostbyname,我尝试过hostent作为volatile,但仍然给出null。 有没有其他方法可以让这一切顺利进行? 我尝试过禁用优化功能,但一直提供空值。主机出错时为空。检查WSAGetLastError的返回值以找出错误 尝试在cmd shell中调用ping www.example.com,检查是否可以从您的计算机访问目标 要不优化,请添加: if(host!=NULL && host->h_name) cout << "host: " << hos

我尝试过hostent作为volatile,但仍然给出null。 有没有其他方法可以让这一切顺利进行? 我尝试过禁用优化功能,但一直提供空值。

主机出错时为空。检查WSAGetLastError的返回值以找出错误

尝试在cmd shell中调用ping www.example.com,检查是否可以从您的计算机访问目标

要不优化,请添加:

if(host!=NULL && host->h_name)
    cout << "host: " << host->h_name << std::endl;

不存储gethostbyname返回的指针。它们在下一次调用时被同一线程覆盖。

返回值如果没有发生错误,gethostbyname将返回指向上述hostent结构的指针。否则,它将返回一个空指针,并且可以通过调用WSAGetLastError检索特定的错误号。MSDN打开的套接字和主机查询之间的假定关系是什么?如果无法将主机名解析为IP地址(如通过DNS),则gethostbyname将失败。ping与gethosbyname不是一回事。ping实际上检查目标是否可以在网络上访问,因此即使gethosbyname成功,如果没有到目标的网络路由,ping仍然可能失败。@Remy Lebeau我没有说这是相同的,但是如果ping失败,gethostbyname也可能失败。这取决于ping失败的方式。ping可能能够将主机名解析为IP,但仍然无法实际与主机通信。