だから私は基本的なUDPサーバーを持っています.バイト配列をクライアントから送信された方法とまったく同じように復元するなどのいくつかのことを実装しました(順不同で取得された場合)。基本的に、私はクライアント、サーバー、およびタイプを持つ共有クラスライブラリを持っています。そのオブジェクトは、クライアントからサーバーへ、またはその逆に送信できます。だから今、私はいくつかのオブジェクトをシリアライズしてサーバー/クライアントに送信するというアイデアを思いつきました。しかし、適切にデシリアライズするには、受信したオブジェクトのタイプを知る必要があります。この問題を解決するために、次の 2 つのアイデアが浮かびました。
- 「握手」をしてください。どのオブジェクトが送信されるか、その長さ、クラス名などに関するデータを送信します。その後、実際のデータを取得して逆シリアル化します。私はそれを行うことを知っていますが、UDPであるため、この「ハンドシェイク」が失われる可能性があり、再要求する必要があるため、かなり複雑なロジックとネットワークの過剰使用がありますが、これを実装する方法を知っています.
- そして2つ目は、ハッシュ値による型の識別です。したがって、クライアントは型のハッシュ値とデータの一部を含むデータを送信します (私は自分の型のオブジェクトのみを送信するので、C# とフレームワークの型にはこれを実装する必要はありません)、このハッシュ値とサーバーで型を決定する必要があります。適切にデシリアライズします。
それで、これを実装する方法はありますか?遅いのでリフレクションを回避できれば完璧です(高速に動作する場合、巨大なswitchステートメントは気にしません)