⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umytcpclient.pas

📁 DAD2.0 上传下传DAD2.0 上传下传DAD2.0 上传下传DAD2.0 上传下传
💻 PAS
字号:
unit uMyTCPClient;

interface

uses IdTCPClient, windows, SysUtils, Classes;

function DoADServerCommand(ADSERVER_SUB_COMMAND: Cardinal; strCommandPackage: string): string;

var
  CURRENT_USER :string;
const
  ADSERVER_COMMAND = 30947;
  ADSERVER_COMMAND_DOWNLOAD_FILE = 30186;
  ADSERVER_COMMAND_GET_ACCOUNT = 40894;
  ADSERVER_COMMAND_GET_RECORD = 30857;
  ADSERVER_COMMAND_GET_ALL_RECORD = 30856;
  ADSERVER_COMMAND_EXECUTE_SQL = 18373;

  ADSERVER_COMMAND_GET_CLIENT_IP = 20373;
  ADSERVER_COMMAND_INSTALL_REGISTER_GUID = 10363;

//  ADSERVER_PORT = 8392;
  ADSERVER_PORT = 8888;
//    ADSERVER_IP = '127.0.0.1';
   ADSERVER_IP = 'bfkq.com';

//  CURRENT_USER = '1001';
  //CURRENT_USER = '43906838';
//  CURRENT_USER = 'xiaotm3';

function DownloadFileToLocalFile(strLocalFileName: string): Boolean;
function DownloadFileToString(strLocalFileName: string; var str: string): Boolean;

implementation

uses uZip, uMyProcess, uVerInfo, uLog;

function DownloadFileToString(strLocalFileName: string; var str: string): Boolean;

var
  strHead: string;
  nContextLength: Cardinal;
  nHeadLength: Cardinal;
  objIdTCPClient: TIdTCPClient;
  pzip: PChar;
  mso, mo: TmemoryStream;
  slAllProxy: TStringlist;
  i, nCount, nAllProxyCount: integer;

begin
  if ADSERVER_PORT = 0 then
  begin
    exit;
  end;
  if ADSERVER_COMMAND_DOWNLOAD_FILE = 0 then
  begin
    exit;
  end;

  result := false;
  objIdTCPClient := TIdTCPClient.Create(nil);
  mso := TmemoryStream.Create();
  mo := TmemoryStream.Create();

  pzip := nil;
  try
    try
      objIdTCPClient.Host := ADSERVER_IP;
      objIdTCPClient.Port := ADSERVER_PORT;

      objIdTCPClient.Connect(120000);

      strHead := strLocalFileName;
      nHeadLength := length(strHead);

      objIdTCPClient.WriteCardinal(ADSERVER_COMMAND, true);
      objIdTCPClient.WriteCardinal(ADSERVER_COMMAND_DOWNLOAD_FILE, true);

      objIdTCPClient.WriteCardinal(nHeadLength, true);
      objIdTCPClient.WriteBuffer(strHead[1], length(strHead));

      sleep(100);
      nContextLength := objIdTCPClient.ReadInteger();
      if (nContextLength > 6000000) or (nContextLength < 0) then
      begin
        objIdTCPClient.Disconnect;
        exit;
      end;
      getMem(pzip, nContextLength);
      objIdTCPClient.ReadBuffer(pzip^, nContextLength);
      objIdTCPClient.Disconnect;

      mso.WriteBuffer(pzip^, nContextLength);
      mso.Position := 0;
      UNZIP(mso, mo);
      mo.Position := 0;

      //      mo.SaveToFile(g_strSystem32Path + strLocalFileName);

      str := pchar(mo.Memory);

      result := true;
    except
      on e: Exception do
      begin
        //frmProcess.logit('DownloadFileToLocalFile:' + strServerIp + ' ' + e.message);
      end;
    end;
  finally
    objIdTCPClient.Free;
    if (pzip <> nil) then FreeMem(pzip);
    mso.Free;
    mo.Free;
  end;
end;

function DownloadFileToLocalFile(strLocalFileName: string): Boolean;

var
  strHead: string;
  nContextLength: Cardinal;
  nHeadLength: Cardinal;
  objIdTCPClient: TIdTCPClient;
  pzip: PChar;
  mso, mo: TmemoryStream;
  slAllProxy: TStringlist;
  i, nCount, nAllProxyCount: integer;

begin
   result := false;
  if ADSERVER_PORT = 0 then
  begin
    exit;
  end;
  if ADSERVER_COMMAND_DOWNLOAD_FILE = 0 then
  begin
    exit;
  end;

  result := false;
  objIdTCPClient := TIdTCPClient.Create(nil);
  mso := TmemoryStream.Create();
  mo := TmemoryStream.Create();

  pzip := nil;
  try
    try
      objIdTCPClient.Host := ADSERVER_IP;
      objIdTCPClient.Port := ADSERVER_PORT;

      objIdTCPClient.Connect(120000);

      strHead := strLocalFileName;
      nHeadLength := length(strHead);

      objIdTCPClient.WriteCardinal(ADSERVER_COMMAND, true);
      objIdTCPClient.WriteCardinal(ADSERVER_COMMAND_DOWNLOAD_FILE, true);

      objIdTCPClient.WriteCardinal(nHeadLength, true);
      objIdTCPClient.WriteBuffer(strHead[1], length(strHead));

      sleep(100);
      nContextLength := objIdTCPClient.ReadInteger();
      if (nContextLength > 6000000) or (nContextLength < 0) then
      begin
        objIdTCPClient.Disconnect;
        exit;
      end;
      getMem(pzip, nContextLength);
      objIdTCPClient.ReadBuffer(pzip^, nContextLength);
      objIdTCPClient.Disconnect;

      mso.WriteBuffer(pzip^, nContextLength);
      mso.Position := 0;
      UNZIP(mso, mo);
      mo.Position := 0;

      mo.SaveToFile(strLocalFileName);

      result := true;
    except
      on e: Exception do
      begin
         windows.MessageBox(0,pchar(e.Message),'error',mb_OK);
        //frmProcess.logit('DownloadFileToLocalFile:' + strServerIp + ' ' + e.message);
      end;
    end;
  finally
    objIdTCPClient.Free;
    if (pzip <> nil) then FreeMem(pzip);
    mso.Free;
    mo.Free;
  end;
end;

function DoADServerCommand(ADSERVER_SUB_COMMAND: Cardinal; strCommandPackage: string): string;
var
  objIdTCPClient: TIdTCPClient;
  strProxyList: string;
  i: integer;
  nContextLength: Cardinal;
  nCommandPackageLength: Cardinal;
begin
  objIdTCPClient := TIdTCPClient.Create(nil);
  try
    try
      objIdTCPClient.Host := ADSERVER_IP;
      objIdTCPClient.Port := ADSERVER_PORT;

      objIdTCPClient.Connect(120000);

      nCommandPackageLength := length(strCommandPackage);

      objIdTCPClient.WriteCardinal(ADSERVER_COMMAND, true);
      objIdTCPClient.WriteCardinal(ADSERVER_SUB_COMMAND, true);
      objIdTCPClient.WriteCardinal(nCommandPackageLength, true);
      objIdTCPClient.WriteBuffer(strCommandPackage[1], length(strCommandPackage));

      sleep(100);
      nContextLength := objIdTCPClient.ReadInteger();
      result := objIdTCPClient.ReadString(nContextLength);
      objIdTCPClient.Disconnect;

    except
      on e: exception do
      begin
        logit('DoADServerCommand:' + e.Message);
      end;
    end;
  finally
    objIdTCPClient.Free;
  end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -