Fórum Preciso fazer um testador de portas urgente #595068
26/06/2018
0
Trabalho em uma empresa de Monitoramento e estou precisando de uma ajuda
Tenho um banco de dados com acesso de clientes(DDNS) que uso na empresa para acessar as cameras do monitoramento, porem estes clientes eu tenho que abrir um por um todos os dias para ver quem esta conectado ou não, além de ser demorado se não estiver funcionando e houver um disparo no local e não abrir as cameras ferrou.
Estou tentando montar um programa basico que ele pegue de um banco db o endereço e porta e faca um teste e me retorne sim ou não, uso apenas um tipo de porta para acesso e estou quebrando a cabeça.
trabalho com delphi a uns 5 anos este esta me deixando de cabelo em pé, fiz um a um tempo atraz mas não retornava o resultado preciso.
Exemplo: cliente: cliente250.dyndns.org portahttp: 9015 conectado:sim
o Programa exporta para *.db e importa o mesmo
Agradeço quem puder ajudar
Obs: não é um port Scanner e sim um testport
Ronaldo Gomes
Curtir tópico
+ 0Post mais votado
26/06/2018
Tenho uma rotina que verifica apenas um servidor por vez.
Você pode adaptar.
1. Cadastre todos os seus clientes numa tabela depois realize um for.
Segue a unit do meu Projeto:
unit UFP;
interface
uses Winsock,
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.FB,
FireDAC.Phys.FBDef, FireDAC.VCLUI.Wait, Vcl.StdCtrls, FireDAC.Comp.UI,
FireDAC.Phys.IBBase, Data.DB, FireDAC.Comp.Client, Vcl.ExtCtrls,
IdBaseComponent, IdComponent, IdRawBase, IdRawClient, IdIcmpClient,
IPPeerServer, IdTCPConnection, IdTCPClient, Datasnap.DSCommonServer,
Datasnap.DSTCPServerTransport;
type
TTFP = class(TForm)
Button1: TButton;
Mlog: TMemo;
Button2: TButton;
INCO: TTrayIcon;
Edt_IP_SERVER: TEdit;
Edt_PORTA_CNX: TEdit;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
function Verificação_Porta(const APort: Integer; const AAddress: string):
Boolean;
public
{ Public declarations }
end;
var
TFP: TTFP;
Partida,Gasto:TTime;
Retorno:string;
implementation
{$R *.dfm}
function TTFP.Verificação_Porta(const APort: integer; const AAddress: string):
Boolean;
var
LTcpClient: TIdTCPClient;
begin
LTcpClient := TIdTCPClient.Create(nil);
try
try
LTcpClient.Host := AAddress; //Endereço Server
LTcpClient.Port := APort; //Porta para teste de Conexão
LTcpClient.ConnectTimeout := 200; //assumir uma porta a ser fechada se não responder dentro de 200ms (algumas portas serão imediatamente rejeitadas, outras estão usando um mecanismo de "sigilo")
LTcpClient.Connect; //Tenta Conectar
result := true; //Retorno de Porta aberta
Retorno:='Ativo';
except
result := false; Retorno:='Desativado';
end;
finally
freeAndNil(LTcpClient);
end;
end;
procedure TTFP.Button1Click(Sender: TObject);
begin
Mlog.Clear;
Partida:=now;
Verificação_Porta(StrToInt(Edt_PORTA_CNX.Text),Edt_IP_SERVER.Text);
Gasto:=now-Partida;
Mlog.Lines.Add(DateTimeToStr(now));
Mlog.Lines.Add('Tempo Gasto :'+TimeToStr(gasto));
Mlog.Lines.Add(Retorno);
end;
procedure TTFP.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TTFP.Button3Click(Sender: TObject);
begin
Mlog.Clear;
end;
end.Raimundo Pereira
Gostei + 2
Mais Posts
28/06/2018
Ronaldo Gomes
Gostei + 0
17/07/2018
Ronaldo Gomes
Agora tenho que estudar o rvmedia para abrir as cameras dos dvrs.
Muito Obrigado!!!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)