Я сделал этот код на 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, но все равно дает ноль.
Есть ли другой способ сделать эту работу?
Я тоже пробовал Оптимизация отключена, но продолжает давать ноль.
host
пусто при ошибке. Проверьте возвращаемое значение WSAGetLastError()
выяснить, что не так.
Попробуйте позвонить ping www.example.com
в оболочке cmd, чтобы проверить, достижима ли цель с вашей машины.
Чтобы не оптимизировать добавить:
if(host!=NULL && host->h_name)
cout << "host: " << host->h_name << std::endl;
Не храните указатели, возвращенные gethostbyname()
, Они перезаписываются при следующем вызове тем же потоком.
Других решений пока нет …