Javaでチャットプログラムを実装しています。クライアントは、さまざまな種類の情報をサーバーに送信できます(つまり、サーバーに参加してユーザー名とパスワードを送信する、サーバー上の別のユーザーとのプライベートチャットを要求する、サーバーから切断するなど)。
サーバー/クライアントが、あるクライアントから別のクライアントに送信されるチャットテキストメッセージを意味する「テキスト」メッセージと「コマンド」メッセージ(切断、プライベートチャットの要求、要求)を区別する正しい方法を探しています。サーバーまたはクライアント向けのファイル転送など)。
2つのオプションがあります。
- シリアル化されたオブジェクトを使用し、「instanceof」を実行して、受信側でオブジェクトが何であるかを判別します。
- データをバイト配列として送信し、配列の最初のNバイトを予約して、着信データの「タイプ」を指定します。
これを行うための「正しい」方法は何ですか?実際のプロトコル(oscar、irc)はこの状況をどのように処理しますか?
私はこのトピックについてグーグルで調べましたが、単純なJavaチャットアプリケーションを中心とした例/ディスカッションしか見つかりませんでした。プロトコル設計(私が最終的に実践するつもりです)について詳しく説明するものはありません。
助けてくれてありがとう...