2009-08-07 53 views
1

我要創建一個2級的應用任務如下:軟件設計:第2層與ClientDataSet的和套接字應用

MSSQL數據庫< - >服務器< - > N客戶(N爲多)

客戶端發送數據到服務器。服務器從數據庫中選擇內容,然後將其發送回客戶端。目前我正在使用Records和SendDataToSocket(網址如下)。

我想在客戶端上使用TDBGrid,使用通過服務器的套接字接收的數據。目前,它是這樣的:

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

客戶: 的ClientDataSet - > LoadFromStream(MemoryStream的) - >數據源 - > DBGrid的

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

所以我想要做的就是發送服務器端的clientdataset流創建給使用loadfromstream讀取流的客戶端。 SendDataToSocket在這裏可行嗎?

我希望你明白我的意思。

回答

1

是的,只要客戶端準備好接收數據。這可以很好地工作,但是取決於發送前可能想要壓縮內存流的數據量和類型。我在以前的項目中執行過類似的方法,但我使用synapse進行數據傳輸......但基本概念是相同的。

zlib單元(包含在CodeGear中)包含一個簡單的包裝提供壓縮和解壓縮的流。由於您控制導線的兩側,因此通過減少導線時間,壓縮很可能會提高性能。

+0

你可能想看看這裏:http://stackoverflow.com/questions/1254578/synapse-cannot-receive-data-from-socket 此外,是否有更多的Synapse例子? – Acron 2009-08-10 17:21:37