-1

我用 C++ 编写了这段代码来连接服务器,但是每次我尝试“gethostbyname”时,该值都是空的(或者优化掉并且不可用)。

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。

4

1 回答 1

4

host错误时为空。检查返回值WSAGetLastError()以找出问题所在。

尝试调用ping www.example.comcmd shell 来检查目标是否可以从您的机器访问。

不优化添加:

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

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

于 2016-06-23T21:31:19.707 回答