1

うーん..それが何を意味するのかよくわかりませんが、私のシステムは、メモリ不足を叫ぶことなく実行され、実行されます...

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

手がかりがある人はいますか?...

への呼び出しで発生します。getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)

EDIT OK...さらにコードを追加します(コメントアウトしていないと意味がありません)

            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」を使用したいので、ポート番号を文字列と番号として保存したり、明示的に変換したりする必要はありません...

4

4 に答える 4

2

おそらく呼び出しのパラメーターが間違っていgetaddrinfoます。もっとコードを投稿できますか?

コマンドプロンプトnet helpmsg 122で入力すると、次のようになります。

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

于 2010-12-06T16:28:28.233 に答える
1

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

于 2010-12-06T16:54:19.707 に答える
1

問題は の実装ですoperator const char*()。その関数が戻ると、stringstreamオブジェクトはスコープ内にないため、有効ではなくなります。

于 2010-12-06T18:08:10.790 に答える
0

おそらく、pFinal変数のサイズが小さすぎます。より完全な答えを得るには、より多くのコードを投稿する必要があります。

于 2010-12-06T17:03:34.717 に答える