Delphi客户端服务器阵列发送

时间:2012-11-21 14:28:04

标签: delphi delphi-7 object-serialization

我需要从服务器向客户端发送动态对象数组。一个例子,它将类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/ServerClient/ServerSockets)?

1 个答案:

答案 0 :(得分:4)

您必须在客户端和服务器之间序列化动态数组。

首次尝试使用您自己的序列化,例如如果这是一个字符串数组或二进制序列化otherwize,则使用#13#10(CRLF)分隔的内容。

在Delphi 7(及更高版本)下,您可以使用our dynamic array wrapper,它可以序列化为JSON或二进制。它将使用可用的RTTI直接完成所有操作。它将适用于所有基本类型:整数,浮点,字符串,嵌套数组,但不是类实例。

对于动态对象数组(类实例),您需要手动进行序列化。使用TReader可能会有所帮助,或者您必须自己编写代码。最好将每侧的所有项目序列化为一个流,然后立即发送内容,以获得更好的性能。