Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PPD

Programa para monitorar ping e fazer ligação telefonica

Recommended Posts

Olá, gostaria de saber se é possivel fazer em delphi um programa que monitore minha net..

 

que fique fazendo um ping e quando cair por um determinado tempo faça uma ligação telefonica através de uma placa de fax modem..

 

se nao for difícil sobre oque devo procurar,, ou se ja existe um programa assim onde posso encontrar.?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carra, de uma olhada neste programa que fiz: http://www.4shared.c...ar_Conexo.html.

Ele esta incompleto, não esta muito bonito, mas acho que uns 50% do que você precisa. Ele utiliza um ping para verificar a estabilidade de conexão e dar um valor de velocidade com o servidor. A velocidade não é muito precisa, mas para detectar quedas de conexão é muito bom.

 

Veja se é mais ou menos isto que precisa? Se for posto o codigo das funções responsaveis pela leitura do arquivo de ping (Não postei hoje por que os fontes estão em casa)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carra, de uma olhada neste programa que fiz: http://www.4shared.c...ar_Conexo.html.

Ele esta incompleto, não esta muito bonito, mas acho que uns 50% do que você precisa. Ele utiliza um ping para verificar a estabilidade de conexão e dar um valor de velocidade com o servidor. A velocidade não é muito precisa, mas para detectar quedas de conexão é muito bom.

 

Veja se é mais ou menos isto que precisa? Se for posto o codigo das funções responsaveis pela leitura do arquivo de ping (Não postei hoje por que os fontes estão em casa)

 

Olá... se puder me passar o fonte agradeço,

não sei se vou poder utilizar alguma coisa, mas é sempre um conhecimento a mais..

 

essa parte achei algo na net, mas preciso mais da parte do modem se puder me ajudar agradeço..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o que eu faço neste programa é o seguinte.

 

1) eu crio um arquivo bat e executo ele e fico esperando ele terminar sua execução

2) ao terminar a execução do arquivo bat, eu trago os resultados que foram salvos em um arquivo (isso eu faço colocando ">c:\endereco\arquivo.txt" no final dos comandos no arquivo bat)

 

Para criar e executar o arquivo bat você pode utilizar este código:

Proceudre CriaArquivoPing;
var
 	arquivo: TStrings
begin
		arquivo := TStringList.Create;
		arquivo.Add('echo off');
		arquivo.Add('cls');
		arquivo.Add('echo Aguarde enquanto a sua conexão é verificada. Isto pode levar alguns minutos');
 	arquivo.Add('echo.');
 	arquivo.Add('echo Verificando a estabilidade da conexão');
		arquivo.Add('ping -n 10 www.imasters.com.br>C:\resultado.dat');
		arquivo.Add('cls');
		arquivo.Add('exit');
		arquivo.SaveToFile('C:\arquivo.bat');
		//executar o ping
 	ShellExecute(self.handle, 'open', 'C:\arquivo.bat', '', PChar(AppPath), SW_HIDE);
 	arquivo.Free;
end;

e para ler o arquivo bat você pode utilizar esta função:

 

 

function ReadPingFile(FileName: string): TPingResult;
var
	arq : textfile;
	temp, temp2 : string;
	cont, tempInt : integer;
	Copiando : boolean;
begin

	Result.Host := '';
	Result.Ip := '';
	Result.TempoMedio := -1;
	Result.TamanhoPacote := -1;
	Result.Porcentagem := -1;

	assignfile(arq, FileName);
	if (FileExists(FileName)) then
	begin
		try
			Reset(arq);
			while (not(eof(arq))) do
			begin
				Readln(arq, temp);
 	//pegar o host
 	if (Result.Host = '') then
 	begin
 		if (Copy(Temp, 1, 10) = 'Disparando') then
 	begin
 			for cont := 19 to length(temp) do
 	begin
							if (temp[cont] = ' ') then
 		break;
 	Result.Host := Result.Host+temp[cont];
 	end;
 	end;
 	end;
 	//pegar o ip
 	if (Result.Ip = '') then
 	begin
 		if (Copy(temp, 1, 12) = 'Resposta de ') then
 	begin
 		for cont := 13 to length(temp) do
 	begin
 		if (temp[cont] = ':') then
 		break;
 	Result.Ip := Result.Ip+temp[cont]
 	end;
 	end;
 	end;
 	//pegar o tamanho dos pacotes
 	if (Result.TamanhoPacote = -1) then
 	begin
 		if (Copy(temp, 1, 12) = 'Resposta de ') then
 	begin
 		temp2 := '';
						Copiando := false;
						for cont := 1 to length(temp) do
						begin
							if (temp[cont] = '=') then
								Copiando := true;


							if (Copiando = true) then
 	begin
 		if (temp[cont] = ' ') then
									break;
								temp2 := temp2+temp[cont];
 	end;
						end;
						temp2 := Copy(temp2, 2, Length(temp2)-1);
						Result.TamanhoPacote := StrToInt(temp2);
 	end;
 	end;
 	//pegar o tempo médio
 	if (Result.TempoMedio = -1) then
 	begin
 		if (Copy(temp, 1, 5) = '	M') then
 	begin
 		tempInt := 0;
 	temp2 := '';
 	for cont := 1 to length(temp) do
 	begin
 		if (temp[cont] = '=') then
 		inc(tempInt);

 	if (tempInt > 2) then
 		if (temp[cont] = ' ') then
 			inc(tempInt);


 	if (tempInt = 4) then //3 '=' e 1 espaço
 	begin
 		temp2 := temp2+temp[cont];
 	end;

 	end;
 	temp2 := copy(temp2, 2, length(temp2)-3);
 	Result.TempoMedio := StrToInt(temp2);
 	end;
 	end;
				//pegar a porcentagem:
 	if (Result.Porcentagem = -1) then
 	begin
					if (copy(temp, 1, 12) = '	Pacotes:') then
					begin
						temp2 := '';
						Copiando := false;
						for cont := 1 to length(temp) do
						begin
							if (temp[cont] = '(') then
								Copiando := true;
							if (temp[cont] = '%') then
								break;

							if (Copiando = true) then
								temp2 := temp2+temp[cont];
						end;
						temp2 := Copy(temp2, 2, Length(temp2)-1);
						Result.Porcentagem := 100-StrToInt(temp2);
					end;
 	end;
 	end;
			CloseFile(Arq);
		except
			try CloseFile(arq); except end;
		end;
	end;'
end;

esta função retorna um registro do tipo 'TPingResult' que deve ser declarado na sessão "Type" da sua unit e tem a seguinte estrutura:

 

	TPingResult = record
		Host: string;
 	Ip: string;
 	TempoMedio: integer;
 	TamanhoPacote : Integer;
 	Porcentagem: Integer;
	end;

 

Não esqueça de declarar ShellApi nas uses da sua unit.

 

Chame o ping assim:

 

CriarArquivoPing;

e leia os resultados assim

 

ReadPingFile('C:\resultado.dat');

 

Estas funções são meio antigas, mas espero que seja útil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.