C ++ Поиск имени хоста для IP без #include - PullRequest
0 голосов
/ 20 марта 2011

Как я могу получить IP, связанный с именем хоста без #include <winsocket2.h>? Я не могу использовать методы <winsocket2.h>, потому что моя DLL падает без каких-либо ошибок компиляции, следующий код не работает ...

hostent *h = gethostbyname(hostName);
      LogAlways((const char*)inet_ntoa(*(reinterpret_cast<in_addr*>(h->h_addr))));

1 Ответ

1 голос
/ 20 марта 2011

Без включения (или зависимости от внешней библиотеки) почти невозможно.

Чтобы получить имя хоста, которое сопоставляется с IP, вам нужно выполнить запрос RARP, который в значительной степени требует от вас использования сокетов.Так или иначе, вы должны быть в состоянии создать сокет.Это то, что winsock2.lib предоставляет в качестве библиотеки.

Итак, вам лучше заставить winsock2.lib работать.Когда вы говорите, что ваша DLL падает без каких-либо ошибок компиляции, я предполагаю, что вы говорите о своем собственном коде, который вы пытаетесь скомпилировать в DLL.

А как насчет отладки?Вы пытались пройтись по коду, чтобы увидеть, где он не работает?Какой тип hostName?Убедитесь, что вы не пытаетесь получить доступ к элементам по нулевому указателю.И что вы правильно распределили память перед использованием переменных.В противном случае сообщите нам более конкретно, какое сообщение об ошибке вы получаете в отладчике.

...