RealThinClient SDK Pro教程:第一个Web服务器(第1课)

本文是RealThinClient SDK Pro教程的第一课,指导如何使用该SDK构建一个Web服务器。通过创建项目,添加RtcHTTPServer和RtcDataProvider组件,配置事件,详细介绍了构建Web服务器的步骤。内容包括设置监听端口,处理OnCreate事件,定义OnCheckRequest和OnCheckReceived事件,以及如何响应特定请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RealThinClient SDK是用于开发标准的HTTP(S)服务器,ISAPI扩展以及客户端的VCL控件。可用于Windows下的CodeGear Delphi 6-2010。关于RealThinClient SDK的教程会持续更新,本节是RealThinClient SDK的第一课,如何构建一个Web服务器。

                                                                点击下载最新版RealThinClient SDK


构建一个Web服务器需要四个大步骤:

  1. 创建一个项目 

  2. 添加两个RealThinClient SDK组件(RtcHTTPServer和RtcDataProvider)

  3.  配置三个事件。

  4.  检查我们的Web服务器是否正常工作。

具体操作如下:

注意:必须将代码添加到FormCreate事件中。要求RtcHttpServer在应用程序开始执行后立即开始侦听请求,因此不需要任何其他类型的控件来启动服务器。

procedure TForm1.FormCreate(Sender: TObject);
begin
  RtcHttpServer1.Listen();
end;

RtcHttpServer组件的Listen()方法可以接受一个参数:  Restarting,默认设置为False。此参数与RestartOn结合使用  。RestartOn允许定义三个属性:

    Request.Filename是客户端请求的完整文件名。RtcDataServer组件的Request属性还可以获取其他数据,如主机名,内容长度和类型,查询参数,HTTP 头等。接下来需接受“/ TIME”的请求,在这种情况下,将处理以下任何内容:

 HTTP://本地主机/时间

 HTTP://本地主机/时间 

http://127.0.0.1/TIME (FileName请求转换为大写)

  1. 创建一个新的VCL Forms项目。在RAD Studio中,选择File -> New。

    01DEMO1NewProject-300x49.png

    创建之后如下所示:

    02DEMONewProjectCreated-300x167.png

  2. 在表单中添加RtcHttpServer组件。在RTCServer组中添加一个RtcHttpServer组件,(要创建一个EXE文件,使用RtcHttpServer组件,如果用ISAPI的DLL方式,将使用TRtcISAPIServer组件)。

    03DEMORtcHttpServerComponent-300x284.png

    然后将其拖到Form1区域。

    04DEMORtcHttpServerOnForm1-300x142.png

  3. 设置侦听请求的端口。选择端口80(通常,所有Web服务器默认在端口80上侦听)。

  4. 转到组件属性。单击RtcHttpServer1组件并转到属性部分。如果屏幕上未显示属性窗口,请按F11,在属性窗口中,查找名为ServerPort的属性并将其值设置为80。

    05DEMO1ServerPort-241x300.png
  5. 创建表单后,RtcHttpServer1组件开始监听。双击Form1或者选择Form1,转到属性窗口,点击Events>OnCreate,Delphi将为OnCreate()事件创建处理程序并将其显示在屏幕上。

    RtcHttpServer组件的Listen()方法可以接受一个参数:  Restarting,默认设置为False。此参数与RestartOn结合使用  。RestartOn允许定义三个属性:

    • ListenError:如果希望服务器在服务无法启动时重新启动,请将此参数设置为TRUE

    • ListenLost:如果希望服务器在服务停止侦听指定端口上的请求时重新启动,请将此参数设置为TRUE。 

    • Wait:定义服务器在尝试重新启动服务之前应等待的时间(以秒为单位)。

  6. 在表单中添加RtcDataProvider。现在已经准备好服务器侦听请求,在表单中添加一个RtcDataProvider组件。将RTCServer组件中的TRtcDataProvider拖动到Form1中。

    RtcDataProviderå¨è°è²æ¿ä¸

    现在表单中已有两个组件。

    08DEMO1RtcDataProviderOnForm-300x143.png

  7. 将RtcDataProvider Server属性设置为RtcHttpServer1。  

    09DEMO1RtcDataProvLink2Serv-300x145.png

    注意:哪个组件处理请求的服务器,就必须定义该组件处理那些请求。

  8. 为RtcDataProvider组件定义OnCheckRequest事件。

    12DEMO1RtcDataProvDataRcvdEvt-300x102.png

    窗口显示内容:

    11DEMO11RtcDataProvCheckReqEvtCode-300x54.png

    本节的代码有两种方式:

    使用with

    procedure TForm1.RtcDataProvider1CheckRequest(Sender: TRtcConnection);
    begin
      with Sender as TRtcDataServer do
        if UpperCase(Request.FileName) = '/TIME' then
          Accept;
    end;
    

    不使用with

    procedure TForm1.RtcDataProvider1CheckRequest(Sender: TRtcConnection);
      var
        rdsSever : TRtcDataServer absolute Sender;
    begin
      if UpperCase(rdsServer.Request.FileName) = '/TIME' then
        rdsServer.Accept;
    end;
    

    Request.Filename是客户端请求的完整文件名。RtcDataServer组件的Request属性还可以获取其他数据,如主机名,内容长度和类型,查询参数,HTTP 头等。接下来需接受“/ TIME”的请求,在这种情况下,将处理以下任何内容:

     HTTP://本地主机/时间

     HTTP://本地主机/时间 

    http://127.0.0.1/TIME (FileName请求转换为大写)

  9. 为RtcDataProvider组件定义OnCheckReceived事件。

    RtcDataProvider OnDataReceivedäºä»¶

    窗口显示内容:

    RtcDataProvider OnDataReceivedäºä»¶ä»£ç 

    本节代码如下:

    使用with

    procedure TForm1.RtcDataProvider1DataReceived(Sender: TRtcConnection);
    begin
      with Sender as TRtcDataServer do
        if Request.Complete then
          Write('Current Time is: ' + TimeToStr(Now));
    end;
    

    不使用with

    procedure TForm1.RtcDataProvider1DataReceived(Sender: TRtcConnection);
      var
        rdsServer: TRtcDataServer absolute Sender;
    begin
      if rdsServer.Request.Complete then
        rdsServer.Write('Current time is: ' + TimeToStr(Now));
    end;
    
  10. 编译且运行项目。按F9键,没有问题出现以下窗口:

    项ç®è¿è¡

  11. 最后转到服务器检查响应。(80端口:http:// localhost / time)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值