天天看點

Delphi DataSnap連接配接逾時設定無效解決方法Delphi DataSnap連接配接逾時設定無效解決方法

Delphi DataSnap連接配接逾時設定無效解決方法

目 錄

  • Delphi DataSnap連接配接逾時設定無效解決方法
    • 該問題修改三個檔案
    • 1DataDbxSocketChannelNativepas
    • 2IPPeerClientpas
    • 3IPPeerAPIpas

解決問題:delphi D10下(XE8\XE7),DataSnap連接配接逾時設定在android中使用無效,導緻不能連接配接伺服器時長時間等待。更新檔包帶源碼及說明。

Datasnap ConnectTimeout android

該問題修改三個檔案:

  • Data.DbxSocketChannelNative.pas

    增加390行、399行兩處代碼;(修改後檔案)

  • IPPeerClient.pas

    增加114-117代碼行;及對應函數與過程内容;(修改後檔案)

  • IPPeerAPI.pas

    增加514-519接口定義 無對應代碼。(修改後檔案)

    對應QC: http://qc.embarcadero.com/wc/qcmain.aspx?d=80954

代碼已上傳到csdn下載下傳區:http://download.csdn.net/detail/tanqth/9798195

支援 RAD10.1.1(10.1 UP1),其他版本請參照修改。

-下載下傳後,将檔案放入到您工程目錄内就行,或将他們複制到其他一個統一的目錄,您所有的工程都從這個統一的目錄加載這些檔案。

1、Data.DbxSocketChannelNative.pas

timeout := DbxProperties[TDBXPropertyNames.ConnectTimeout];
  if timeout = '' then
        ConnectTimeout := 
    else
        ConnectTimeout := StrToInt(timeout);
        //設定網絡連接配接逾時  -- 譚欽
    FIdSocket.ConnectTimeout:= ConnectTimeout;

  commTimeout := DbxProperties[TDBXPropertyNames.CommunicationTimeout];
  if commTimeout = '' then
    CommunicationTimeout := 
    else
        CommunicationTimeout := StrToInt(commTimeout);
  //設定網絡讀逾時  -- 譚欽
    FIdSocket.ReadTimeout:=CommunicationTimeout;
           

2、IPPeerClient.pas

//begin 增加設定網絡連接配接(讀取)逾時 2017-3-29 譚欽
        function GetConnectTimeout: Integer;
        procedure SetConnectTimeout(timeout: Integer);
        function GetReadTimeout: Integer;
        procedure SetReadTimeout(timeout: Integer);
        //End

function TIdTCPClientPeerIP.GetConnectTimeout: Integer;
begin
    Result := FTCPClient.ConnectTimeout;
end;

procedure TIdTCPClientPeerIP.SetConnectTimeout(timeout: Integer);
begin
    FTCPClient.ConnectTimeout := timeout;
end;

function TIdTCPClientPeerIP.GetReadTimeout: Integer;
begin
    Result := FTCPClient.ReadTimeout;
end;

procedure TIdTCPClientPeerIP.SetReadTimeout(timeout: Integer);
begin
    FTCPClient.ReadTimeout:=timeout;
end;
           

3、IPPeerAPI.pas

//begin 增加網絡連接配接(讀取)逾時設定 2017-3-29 譚欽
        function GetConnectTimeout: Integer;
        procedure SetConnectTimeout(timeout: Integer);
        property ConnectTimeout: Integer read GetConnectTimeout write SetConnectTimeout;
        function GetReadTimeout: Integer;
        procedure SetReadTimeout(timeout: Integer);
        property ReadTimeout: Integer read GetReadTimeout write SetReadTimeout;
        //end