Ich verwende die Funktion gethostbyname() in der üblichen Weise ...gethostbyname win32 Fehler
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);
}
auf meiner Web-Site zugreifen und Informationen zurückgeben. Die Variable "lpServerName" kann ein beliebiger Host sein, z. B. "google.com" oder der Loopback "127.0.0.1".
Mein System: Windows x64 oder x32 (es spielt keine Rolle, der gleiche Fehler auftritt) läuft auf einem AMD Opteron System, XAMPP ist auf meinem Rechner und ich benutze es für Debugging-Zwecke, mein Compiler ist Microsoft Visual C++ 2005.
Hier ist das Problem: Wenn ich die Loop-Back-Adresse verwenden, funktioniert der obige Code gut. Wenn ich versuche, auf eine Website außerhalb meines Computers zuzugreifen, erhalte ich den folgenden Fehler: "Windows hat in test_gethostbyname.exe einen Haltepunkt ausgelöst. Dies liegt möglicherweise an einer Beschädigung des Heapspeichers und weist auf einen Fehler in test_gethostbyname.exe oder anderen hin der geladenen DLLs. Das Ausgabefenster kann weitere Diagnoseinformationen enthalten. " Das Programm "test_gethostbyname.exe" enthält nur die Teile des Codes aus einem viel größeren Projekt, die für den Zugriff auf das Internet gelten. Daher glaube ich nicht, dass der Haufen durch irgendetwas, was ich getan habe, verdorben wird. Ich habe den Befehl "getaddrinfo" mit den gleichen Ergebnissen versucht. Ich habe das Web nach irgendwelchen Informationen zu diesem Problem ohne Freude durchsucht (abgesehen von Segmentierungsfehlern auf Unix-Systemen).
Kennt jemand irgendein Problem mit diesem Befehl, der diesen Fehler verursachen würde?
Vielen Dank im Voraus,
Jay
Sie haben sowohl IPs als auch Domainnamen ausprobiert? – Paxic
Ja, ohne Erfolg. – jay