6

オブジェクトの動的配列をサーバーからクライアントに送信する必要があります。Figureその座標、色などに関する情報を持つクラスのオブジェクトを含む配列としての例。

私はこのようなものを使ってデータを送信しようとしていました:

for i := 0 to ServerSocket.Socket.ActiveConnections - 1 do
begin
  ServerSocket.Socket.Connections[i].SendText(some values); // then parsing this text to get values
end;

しかし、そのようにするのは本当に悪い方法だと思います。では、いくつかのオブジェクトの配列を送受信する正しい方法を教えてください (IdTCPClient/Serverまたはを使用してClient/ServerSockets)。

4

1 に答える 1

4

クライアントとサーバーの間で動的配列をシリアル化する必要があります。

最初の試みは、独自のシリアライゼーションを使用することです。たとえば、これが文字列の配列である場合は #13#10 (CRLF) で区切られたコンテンツを使用し、それ以外の場合はバイナリ シリアライゼーションを使用します。

Delphi 7(およびそれ以降)では、 JSONまたはバイナリへのシリアル化を可能にする動的配列ラッパーを使用できます。利用可能な RTTI を使用して、すべてを直接実行します。整数、浮動小数点、文字列、ネストされた配列など、すべての基本型で機能しますが、クラス インスタンスでは機能しません。

オブジェクト (クラス インスタンス) の動的配列の場合、シリアル化を手動で行う必要があります。を使用TReaderすると役立つ場合があります。または、自分でコーディングする必要があります。パフォーマンスを向上させるために、両側のすべてのアイテムを 1 つのストリームにシリアル化し、コンテンツを一度に送信することをお勧めします。

于 2012-11-21T16:12:23.510 に答える