質問

まあ..私はそれが何を意味するのか本当にわかりませんが、私のシステムは、不十分なメモリーのために泣くことなく走り、走り、走ります...

Winsockエラーコード(MSDN)には122がないため、システムエラー122に関係していると思います...

誰かが手がかりを得ましたか?...

通話時に発生します getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)

編集 さて...もっとコードが増えます(コメントしていないので、意味をなさない)

            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;

問題は私のg_acceptor_port_numberにあります。

operator const char*()
    {
        std::stringstream ss;
        ss << m_nPortNumber;
        return ss.str().c_str();
    }

コンバージョンオペレーターを変更する必要がありますか?...この「stringint」を使用することを好むので、ポート番号を文字列と番号として保存したり、明示的に変換する必要はありません...

役に立ちましたか?

解決

問題はあなたの実装です operator const char*(). 。その関数が戻ったら、あなた stringstream オブジェクトは、範囲内にないため、もはや有効ではありません。

他のヒント

おそらくの悪いパラメーター getaddrinfo 電話。もっとコードを投稿できますか?

入力します net helpmsg 122 コマンドプロンプトで、あなたは取得します:

システムコールに渡されたデータ領域は小さすぎます。

getaddrinfo 実際にエラーコードを返します。これは、で指定された値に対してテストする必要があります getaddrinfoドキュメント

おそらく、PFINAL変数のサイズが小さすぎます。より徹底的な回答を得るには、さらにコードを投稿する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top