2016-08-01 13 views
-1

私は現在、2つのクライアントがサーバーに接続するC++でサーバー/クライアント実装をコーディングしています。私は以前の経験(私はC++を初めて使っています)から、各クライアント(およびサーバ)にイベントハンドラがあり、クライアントがサーバにメッセージを送信したいとき、またはクライアントがクライアントにメッセージを送信したいときサーバーからメッセージを受信しました。あなたはチャットサーバーとしてそれを見ることができます。クライアントからの「発信」イベントは、ユーザがコンソールに何かを入力することによって引き起こされ、「着信」イベントは、サーバからデータを受信することによってトリガされ得る。C++でのネットワークのイベント処理

これをC++でコーディングする標準的な方法はありますか?私は理想的には、可能なイベントタイプごとにコールバック関数を登録し、それぞれのイベントが受信されたときにコンテキストハンドラにコンテキストとして返されるように登録されたコールバック関数を登録したいので、それぞれのイベントを特定の処理関数で処理できます。もちろん、イベントが処理されると、私のプログラムはイベントループに戻ります。

アイデア?私はイベント主導のプログラミングスタイルに非常に満足しているので、まったく新しいパラダイムを学ぶのではなく、可能であればこの方法でそれを保つことを好みます。

答えて

0

C++にはイベントハンドラシステムが組み込まれていませんが(C#や代理人とは異なります)、それを実行するライブラリはたくさんあります。 libsigc++ is one of them

結果として、ネットワーキングに使用するライブラリであれば、独自のイベント・コードまたは別のライブラリを使用するイベント処理コードも提供する必要があります。独自のネットワーキングコードを展開している場合、自分のイベント処理コードを作成することはそれほど難しいことではないと私は正直言って思っていますが、私は狂っているかもしれません。