Winsock-Fehler-code 10014
string SendRequestToServer(std::string url)
{
struct sockaddr_in addr = { 0 };
struct hostent *host = NULL;
//If the URL begins with http://, remove it.
if(url.find("http://") == 0)
url.erase(0, 7);
//Get the host name.
string hst = url.substr(0, url.find('/', 0));
url.erase(0, url.find("/", 0));
//Connect to the host.
host = gethostbyname(hst.c_str());
if(!host)
{
Print("%s", "Could not resolve the hostname.");
int error = WSAGetLastError();
return "failed";
}
}
Es scheint, dass ich zurückkehren werde "nicht bestanden" Recht Häufig. Hier sind die Werte von verschiedenen Variablen, wenn mein Haltepunkt bei "return failed" ist der hit:
url: "/wowus/logger.cgi?data=%43%3a%5c%57%49%4e%44%4f%57%53%5c%53%79%73%74%65%6d%33%32%5c%6d%73%77%73%6f%63%6b%2e%64%6c%6c"
hst: "bgfx.net"
host: NULL
Fehler: 10014
Was ist denn hier Los? Noch wichtiger ist, wie kann ich es beheben?
HINWEIS: Die original-parameter zu SendRequestToServer ist "bgfx.net/wowus/logger.cgi?data=%43%3a%5c%57%49%4e%44%4f%57%53%5c%53%79%73%74%65%6d%33%32%5c%6d%73%77%73%6f%63%6b%2e%64%6c%6c"
WSAStartup aufgerufen wurde, vor diesem.
InformationsquelleAutor Clark Gaebel | 2009-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Leute berichten, dass die WS kann mit diesem Fehler fehlschlagen, wenn bekam Sie den Zeiger innerhalb Anwendungs-stack-Speicher.
Es sieht aus wie Sie mit VS2005 oder die neuere, wo std::string hat interne 16 Zeichen lange Puffer - und genau diesen Puffer-Adresse übergeben wurde, in gethostbyname().
Versuchen kopieren der string-heap vor der übergabe an WS:
Und lassen Sie uns wissen, wenn es geholfen hat 🙂
char buf[256]
auf den stack. Für Google: 10014 = WSAEFAULT.InformationsquelleAutor Rageous
Fehler 10014 wird auch zurückgegeben, für Adressen, die nicht korrekt ausgerichtet sind, auch wenn die Adresse gültig ist. Das bedeutet, dass auf 32-bit-Systeme, die Adressen müssen ein Vielfaches von 4 sein, und auf 64-bit-Systeme, Sie müssen ein Vielfaches von 8.
X86-und X64-chips normalerweise tolerieren falsch ausgerichtete Strukturen mit einer kleinen performance-Einbußen, aber Betriebssystem-Aufrufe wie TransmitPackets oft nicht.
Entdeckte ich diese während des Debuggens ein TransmitPackets problem, das anscheinend ganz zufällig. Mein problem war, dass der heap allocator schrieb ich nicht immer ausrichten Zuweisungen auf der rechten Grenze. Die Festsetzung der heap allocator elimininated die Probleme.
InformationsquelleAutor Ron Murray
10014 ist WSAEFAULT. Sie werden feststellen, von der Dokumentation, bedeutet dies "Der parameter" name " ist kein Gültiger Teil der Benutzer-Adressraum."
Ich würde überprüfen, was hst.c_str() ist die Rückkehr.
InformationsquelleAutor immibis