gethostbyname c++ 的问题

Problems with gethostbyname c++

我用 c++ 编写了这段代码来连接到服务器,但每次我尝试 "gethostbyname" 值都是 null(或优化掉并且不可用)。

WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
    cout << "WSAStartup failed.\n";
    system("pause");
    return 1;
}
hostent *host = gethostbyname("www.example.com");

我已经尝试将 hostent 作为 volatile,但仍然给出 null。 还有其他方法可以使这项工作吗? 我也试过禁用优化但一直给 null。

host 出错时为空。检查 WSAGetLastError() 的 return 值找出问题所在。

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

不优化添加:

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

不要存储 return 由 gethostbyname() 编辑的指针。它们在同一线程的下一次调用中被覆盖。