Wsagetlasterror () gibt 122 zurück
-
09-10-2019 - |
Frage
Nun, ich bin mir nicht sicher, was das bedeutet, aber meine Systeme läuft und rennen und läuft, ohne nach unzureichenden Memeory zu weinen ...
Ich denke, es hat mit dem Systemfehler 122 zu tun, da in den Winsock -Fehlercodes (MSDN) keine 122 ...
Hat jemand eine Ahnung? ...
Es kommt auf einen Anruf zu getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)
BEARBEITEN Okay ... hier ist mehr Code (es macht nicht auch keinen Sinn), auch nicht sinnvoll)
addrinfo hints, *pFinal = nullptr;
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_INET;
if(getaddrinfo(NULL, g_ACCEPTOR_PORT_NUMBER, &hints, &pFinal))
return ERROR_BIND_SOCKET;
Das Problem liegt in meinem g_acceptor_port_number, einer Klasse, die enthält
operator const char*()
{
std::stringstream ss;
ss << m_nPortNumber;
return ss.str().c_str();
}
Muss ich den Conversion -Operator ändern? ... Ich würde diese "StringInt" bevorzugen, damit ich die Portnummer nicht als Zeichenfolge und Nummer speichern oder explizit konvertieren muss ...
Lösung
Das Problem ist Ihre Implementierung von operator const char*()
. Sobald diese Funktion zurückgibt, ist Ihre stringstream
Das Objekt ist nicht mehr gültig, da es nicht mehr im Bereich ist.
Andere Tipps
Wahrscheinlich ein schlechter Parameter auf der getaddrinfo
Anruf. Können Sie mehr Code veröffentlichen?
Eintippen net helpmsg 122
Bei einer Eingabeaufforderung und Sie erhalten:
Der an einen Systemaufruf übergebene Datenbereich ist zu klein.
getaddrinfo
Gibt tatsächlich einen Fehlercode zurück, den Sie gegen die in der angegebenen Werte testen sollten GetAddrinfo -Dokumentation
Die Größe der Pfinalvariablen ist mehr als zu klein. Sie müssen mehr Code veröffentlichen, um eine gründlichere Antwort zu erhalten.