ソケットプロトコルの既存の一連のイベントの上に新しいイベントを定義するためのデザインクエリ

StackOverflow https://stackoverflow.com/questions/6317684

  •  26-10-2019
  •  | 
  •  

質問

JBoss Nettyを使用してJavaサーバーとクライアントプログラムを書きました。リモートクライアントにデータを送信し、それらからデータを返すために、各イベントのイベントとハンドラーを定義しました。ワイヤー上では、各イベントは単一のバイト(OpCode)ヘッダーに続いてメッセージバイトが続きます。当初、私はTCPのみをサポートしていて、私のプログラムでlog_in、log_out、data_in、data_outなどのイベントを定義していました。例えば

public static final int LOG_IN = 0x08;
public static final int LOG_OUT = 0x0a;

その後、UDPもサポートすることにし、login_udp、login_tcp、data_out_tcp、data_out_udpなどのイベントがあることになり、イベントに基づいて正しいイベントハンドラーがイベントを取得し、適切なソケットとリモートポートに書き込みます。

私が直面している最初の問題を見ることができるように、UDPの追加時に定義されたイベントとイベントハンドラーの数がほぼ2倍になったことです。このシナリオにアプローチするより良い方法はありますか?

私が直面している2番目の(マイナー)問題は、Data_outのようなイベントがサーバーからクライアントに書き込むときに理にかなっているが、クライアント側で同じイベントを受信するときは、実際に着信しているデータであるため、そのような意味をなさないということです。クライアント向け。現時点では、data_outをdata_inに変換するデコーダーがあります。これは最良のアプローチですか?

役に立ちましたか?

解決

工場パターンを使用して、タイプチャネルIE TCPまたはUDPに基づいて接続を作成できます。その他の詳細は、この場合に一度定義する必要があります

代わりにdata_outを呼び出す代わりに、server_inと同じようにserver_outとして呼び出すことができます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top