gethostbyname c ++的问题

时间:2016-06-23 21:17:35

标签: c++ windows gethostbyname

我用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");

我已尝试使用不稳定的东西,但仍然给出了null。 有没有其他方法可以使这项工作? 我已经尝试过禁用优化但仍然保持null。

1 个答案:

答案 0 :(得分:4)

错误时

host为空。检查WSAGetLastError()的返回值以确定错误。

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

不优化添加:

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

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