我用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。
答案 0 :(得分:4)
host
为空。检查WSAGetLastError()
的返回值以确定错误。
尝试在cmd shell中调用ping www.example.com
以检查是否可以从您的计算机访问目标。
不优化添加:
if(host!=NULL && host->h_name)
cout << "host: " << host->h_name << std::endl;
不要存储gethostbyname()
返回的指针。它们在下一次调用时被同一个线程覆盖。