1

我的任务是创建一个第 2 层应用程序,如下所示:

MSSQL 数据库 <-> 服务器 <-> n-Client(n 表示许多)

客户端向服务器发送数据。服务器从数据库中选择内容,然后将其发送回客户端。目前我正在使用 Records 和 SendDataToSocket(url 如下)来做这件事。

我想使用通过套接字从服务器接收到的数据在客户端上使用 TDBGrid。目前它是这样的:

服务器: DB -> ADOQuery -> DataSetProvider -> ClientDataSet -> SaveToStream(MemoryStream)

客户端: ClientDataSet -> LoadFromStream(MemoryStream) -> DataSource -> DBGrid

我正在使用SendDataToSocket(Socket: TCustomWinSocket; Data: Pointer; DataSize: Integer; Buffer: TMemoryStream): Integer;

所以我想要做的是将服务器端的客户端数据集创建的流发送给使用 loadfromstream 读取流的客户端。SendDataToSocket 在这里可行吗?

我希望你明白我的意思。

4

1 回答 1

1

是的,只要客户端准备好接收数据。这会很好,但是取决于您可能希望在发送之前压缩内存流的数据量和类型。我在以前的项目中执行过类似的方法,但我使用突触进行数据传输……但基本概念是相同的。

zlib 单元(包含在 CodeGear 中)包含一个简单的包装器,用于提供压缩和解压缩的流。由于您控制导线的两侧,因此压缩很可能会通过减少导线时间来提高性能。

于 2009-08-07T16:02:44.510 回答