Windows — Проблемы с переполнением стека gethostbyname

Я сделал этот код на 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, но все равно дает ноль.
Есть ли другой способ сделать эту работу?
Я тоже пробовал Оптимизация отключена, но продолжает давать ноль.

-1

Решение

host пусто при ошибке. Проверьте возвращаемое значение WSAGetLastError() выяснить, что не так.

Попробуйте позвонить ping www.example.com в оболочке cmd, чтобы проверить, достижима ли цель с вашей машины.

Чтобы не оптимизировать добавить:

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

Не храните указатели, возвращенные gethostbyname(), Они перезаписываются при следующем вызове тем же потоком.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]