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 ...

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top