C++查找不带 #include的 IP 主机名

发布于 2024-10-25 11:15:56 字数 327 浏览 2 评论 0原文

如何在没有 #include 的情况下检索与主机名相关的 IP? 我无法使用 方法,因为我的 DLL 在没有任何编译错误的情况下崩溃,以下代码不起作用...

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

How can i retrieve the IP related to a hostname without #include <winsocket2.h>?
I can't use the <winsocket2.h> methods because my DLL crashs without any compile errors, the following code doesn't work ...

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风蛊 2024-11-01 11:15:56

如果没有包含(或对外部库的依赖),几乎没有办法。

为了获取映射到 IP 的主机名,您需要执行 RARP 请求,这几乎要求您能够使用套接字。因此,无论怎样,您都需要能够创建一个套接字。这是winsock2.lib 作为库提供的。

所以,你最好让winsock2.lib 工作。当你说你的 DLL 崩溃而没有任何编译错误时,我假设你正在谈论你自己的代码,你正试图将其编译成 DLL。

那么调试呢?您是否尝试过单步执行代码以查看哪里失败了?主机名是什么类型?检查以确保您没有尝试访问空指针上的成员。并且在使用变量之前您已经正确分配了内存。否则,请让我们更具体地了解您在调试器中收到的错误消息。

Without an include (or a dependency on an external library) there's almost no way.

In order to get the hostname that maps to an IP you need to do a RARP request which pretty much requires you to be able to use sockets. So one way or another you need to be able to create a socket. Which is what the winsock2.lib provides as a library.

So, you're better off getting winsock2.lib to work. When you say your DLL crashes without any compile errors I'm assuming you are talking about your own code which you're trying to compile into a DLL.

What about debugging? Have you tried stepping through the code to see where it fails? What is the type of hostName? Check to make sure you're not trying to access members on a null pointer. And that you've allocated memory correctly before you're using the variables. Otherwise, let us know more specifically what error message you get in the debugger.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文