【发布时间】:2009-03-13 02:29:10
【问题描述】:
我正在以通常的方式使用 gethostbyname() 函数...
iaHost.s_addr = inet_addr(lpServerName);
if (iaHost.s_addr == INADDR_NONE)
{
// Wasn't an IP address string, assume it is a name
lpHostEntry = 0;
lpHostEntry = gethostbyname(lpServerName);
}
访问我的网站并返回信息。变量“lpServerName”可以是任何主机,例如“google.com”或环回“127.0.0.1”。
我的系统:在 AMD Opteron 系统上运行的 Windows x64 或 x32(发生相同的错误无关紧要),XAMPP 在我的机器上,我将它用于调试目的,我的编译器是 Microsoft Visual c++ 2005。
问题是:当我使用环回地址时,上面的代码可以正常工作。当我尝试访问计算机外部的网站时,出现以下错误:“Windows 已在 test_gethostbyname.exe 中触发断点。这可能是由于堆损坏,并表明 test_gethostbyname.exe 或任何它已加载的 DLL。输出窗口可能有更多的诊断信息“。该程序“test_gethostbyname.exe”仅包含来自一个更大的项目的代码部分,该项目适用于访问 Internet。因此,我认为堆没有被我所做的任何事情破坏。我已经尝试了具有相同结果的“getaddrinfo”命令。我在网上搜索了有关此问题的任何类型的信息(除了 unix 系统上的分段错误)。
有谁知道这个命令有什么问题会导致这个错误发生吗?
提前致谢,
杰
【问题讨论】:
-
IP和域名都试过了吗?
标签: c winapi sockets visual-studio-2005