私は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");
ハンドシェイクが失敗するのはなぜですか? わからないことがありますか?ありがとう