0

私はLacewingというライブラリを使用しています。http://lacewing-project.org/

Windows crypt API を使用して、安全なサーバーを作成します。

自分の PC (Josh-Laptop) 用の証明書を作成し、netsh を使用してそれをポート 8012 にバインドしました。Lacewing は、証明書が正常に読み込まれたと言います。

次に、問題が発生します。家の 1 台の PC (ホスト) から別の PC (クライアント) にメッセージを送信しようとしています。

証明書をロードせずにアンセーフ モードで使用すると、すべてのメッセージが送受信されます。

    void ServerCore::onConnect( Lacewing::Server::Client &client )
    {
        client.SendWritable("test");
    }

...

    void ServerCore::onReceive( 
        Lacewing::Server::Client &client, char * data, int size )
    {
        getServer().FirstClient()->SendWritable("test");
        client.SendWritable("test");
        std::cout << data << " was received from " << client.GetAddress().ToString() << std::endl;
    }

    void ClientCore::onConnect()
    {
        getClient().Send("test");
    }


    void ClientCore::onReceive( char * data, int size )
    {
        getClient().Send("Okay then...");
        std::cout << data << std::endl;
    }

クライアント側では、「テスト」を受け取ります。サーバー側では、ライブラリが「ハンドシェイクに失敗しました」「オーバーラップした io 操作が進行中です」というエラーを吐き出します。

これは私が証明書をロードする方法です:

getServer().LoadSystemCertificate("MY","JOSH-LAPTOP","localmachine");

ハンドシェイクが失敗するのはなぜですか? わからないことがありますか?ありがとう

4

0 に答える 0