翻譯|使用教程|編輯:況魚杰|2019-06-26 17:48:31.660|閱讀 671 次
概述:本教程介紹兩個(gè)數(shù)據(jù)提供程序如何協(xié)同工作以及如何使用多個(gè)Write調(diào)用來發(fā)送復(fù)雜內(nèi)容。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
RealThinClient SDK是用于開發(fā)標(biāo)準(zhǔn)的HTTP(S)服務(wù)器,ISAPI擴(kuò)展以及客戶端的VCL控件。可用于Windows下的CodeGear Delphi 6-2010。關(guān)于RealThinClient SDK的教程會(huì)持續(xù)更新,本節(jié)是RealThinClient SDK的第二課,如何使用構(gòu)建的服務(wù)器發(fā)送動(dòng)態(tài)生成的內(nèi)容。
點(diǎn)擊下載最新版RealThinClient SDK
在本教程中,您會(huì)了解兩個(gè)數(shù)據(jù)提供程序如何協(xié)同工作以及如何使用多個(gè)Write調(diào)用來發(fā)送復(fù)雜內(nèi)容。
下面是具體的操作步驟:
打開Web Server的項(xiàng)目。
將一個(gè)RtcDataProvider組件添加到我們的項(xiàng)目中。
當(dāng)添加一個(gè)新的RtcDataProvider時(shí),它將生成一個(gè)頁面,其中的方形值從1到100。我們已經(jīng)有另一個(gè) RtcDataProvider組件在該項(xiàng)目中運(yùn)行,并為/ TIME請(qǐng)求提供內(nèi)容。現(xiàn)在我們添加另一個(gè) RtcDataProvider組件,它將為/ SQUARE請(qǐng)求提供內(nèi)容。
從RTC Server組件組中獲取TRtcDataProvider組件并將其放在Form1中。
為提高項(xiàng)目的可讀性,此示例中RtcDataProvider組件已重命名為 rdpSquare。
將RtcDataProvider連接 到我們的服務(wù)器。
因?yàn)榭梢酝瑫r(shí)在多個(gè)端口中監(jiān)聽多個(gè)服務(wù)器組件,所以需要知道RtcDataProvider將使用哪個(gè)服務(wù)器(RtcHttpServer組件)
配置RtcDataProvider 事件以查看特定請(qǐng)求并添加要發(fā)送的內(nèi)容。
連接RtcDataProvider到服務(wù)器后,還需要定義服務(wù)器偵聽的請(qǐng)求類型。在這種情況下,RtcDataProvider組件將偵聽/ SQUARE請(qǐng)求。
使用with
procedure TForm1.rdpSquareCheckRequest(Sender: TRtcConnection);
begin
with TRtcDataServer(Sender) do
if UpperCase(Request.FileName) = '/SQUARE' then
Accept;
end;
不使用with
procedure TForm1.rdpSquareCheckRequest(Sender: TRtcConnection);
var
rdsServer : TRtcDataServer absolute Sender;
begin
if UpperCase(rdsServer.Request.FileName) = '/SQUARE' then
rdsServer.Accept;
end;
定義OnDataReceived事件以發(fā)送響應(yīng)。
對(duì)于可以安全地安裝在服務(wù)器內(nèi)存中的小文件或文件(例如,最高32K)或準(zhǔn)備網(wǎng)站輸出,不需要拆分傳輸。您可以直接從RtcDataProvider組件的OnDataReceived事件中輸出文件。也可以連續(xù)使用Write方法。
我們必須對(duì)RtcDataProvider組件的請(qǐng)求到達(dá)時(shí)將發(fā)送的內(nèi)容進(jìn)行定義。
所以必須編寫RtcDataProvider組件的 OnDataReceived事件。注意:必須等到請(qǐng)求完成后才能將響應(yīng)發(fā)送回請(qǐng)求數(shù)據(jù)的客戶端。
使用with
procedure TForm1.rdpSquareDataReceived(Sender: TRtcConnection);
var
viLine : integer;
begin
with TRtcDataServer(Sender) do
begin
if Request.Complete then
begin
Write('');
Write('Square Values');
Write('NumberSquare');
for viLine := 1 to 100 do
begin
Write('' + IntToStr(viLine) + '');
Write('' + IntToStr(viLine * viLine) + '');
end;
Write('');
end;
end;
end;
不使用with
procedure TForm1.rdpSquareDataReceived(Sender: TRtcConnection);
var
viLine : integer;
rdsServer : TRtcDataServer absolute Sender;
begin
if rdsServer.Request.Complete then
begin
rdsServer.Write('');
rdsServer.Write('Square Values');
rdsServer.Write('NumberSquare');
for viLine := 1 to 100 do
begin
rdsServer.Write('' + IntToStr(viLine) + '');
rdsServer.Write('' + IntToStr(viLine * viLine) + '');
end;
rdsServer.Write('');
end;
end;
保存并運(yùn)行我們的項(xiàng)目以檢查服務(wù)器的響應(yīng)
最后就是運(yùn)行服務(wù)器,如果一切正常,我們應(yīng)該在屏幕上看到我們的Form1。
如果我們打開一個(gè)Web瀏覽器并轉(zhuǎn)到 http:// localhost / square,我們應(yīng)該得到一個(gè)表格,其中包含從1到100的數(shù)字的平方值。
還可以在請(qǐng)求/ TIME時(shí)檢查之前的RtcDataProvider組件是否正在發(fā)送內(nèi)容。 轉(zhuǎn)到http:// localhost / time,顯示如下:
年中活動(dòng)倒計(jì)時(shí)中,還不趕緊下手,點(diǎn)擊就可領(lǐng)取 MyEclipse 、.NET Reactor、FastReport .Net、VMProtect等超多在線訂購產(chǎn)品優(yōu)惠券!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: