📄 umytcpclient.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 + -