0

マルチプレイヤー機能を備えたゲームを作成しており、サーバー コンソールを作成する必要があります。サーバーが実行されている必要があり、サーバー管理者がサーバーコンソールに入力している間にログメッセージを出力する可能性があるため、単純な「標準入力からの読み取り -> 入力の処理 -> 出力の書き込み」ループは機能しません。UNIX/Linux システム用の tecla および Editline ライブラリーを見てきましたが、Windows 用のものは見つかりませんでした。そのようなことのための良いライブラリは何ですか?

わからない場合は、これはc/c++ のインタラクティブ コンソール プログラミングとほとんど同じですか? ただし、Windowsの場合。

4

1 に答える 1

0

この問題には、次の 2 つの一般的なアプローチがあります。

  1. サーバー全体を 1 つのスレッドで実行し、非同期 IO を使用するメイン ループでスレッドを制御して、イベント (着信パケット、コンソール キーの押下など) の送信元を特定し、処理します。

    UNIX システムでは、後の UNIX/Linux バージョンでは、呼び出しと epoll()` のselect()ようないくつかのより高度なバリアントがあります。Windows では、これをOverlapped IOpoll()と呼びます。

  2. 個別のスレッドでサーバーの個別の部分を管理します。通常のアプローチは、クライアントごとに 1 つのスレッドと、コンソール用のスレッドです。ここでは、メイン ループを記述しようとする代わりに、スレッドが互いに足を踏み入れないようにするために、ミューテックス条件変数などを慎重に使用する必要があります。

于 2012-04-23T03:32:21.007 に答える