Download gerencia de redes lan - TCC On-line

Transcript
Helio Ishii Stroparo
Rafael Avila
Leite
GEREN CIA DE REDES LAN
Monografia
Graduactao
a
apresentada
disciplina
Projeto
de
do Curso de Tecnologia
em Informatica
da Faculdade de Ciencias Exatas e de Tecnologia
da Universidade Tuiuti do Parana como requisito
para obtenc;ao do grau de Tecn61ago em
Informatica.
Orientador:
CURITIBA
2006
Roberto
Neia Amaral
Agradecemos aos professores do Curso
de Tecnologia em Informatica pelo
incentivo con stante no decorrer de todD
esse tempo de estudo.
Dedicamas esta abra a nassas famflias,
primeiramente,
pelo apoio, e em especial
ao meu orientador professor Roberto NEiia
Amaral, par nos abrir 0 campo de visaa
para novas horizantes.
Educagao e aquilo que resta quando nos
esquecemos daquilo
que
nos foi
ensinado.
Michael Hammer
RESUMO
Este trabalho tem por objetivo 0 desenvolvimento
de um prot6tipo gratuito, on de seja
possivel gerenciar os ativos de uma rede de dados. Busca-se realizar a proposta,
com 0 intuito de proporcionar
aos administradores
de redes, atraves de um algoritmo
estruturado nos conceitos de gerenciamento
de redes, redes de dados e linguagens
de programagao,
melhora na disponibilidade
dos recursos de redes bem como na
performance de atendimento aos usuarios. 0 prot6tipo propoe urn gerenciamento de
redes
LAN
que
permita
ao administrador
de
redes
tomar
decisoes
quanto
aos
problemas que estao ocorrendo, como tambem as que podem Deorrer, favorecendo
a analise
critica do funcionamento
Palavras-chave:
de uma rede de dad os.
Rede de Dados, Administradores
de Redes, Gerenciamento.
LlSTA DE FIGURAS
FIGURA
1 - Repetidor
FIGURA
2 - Hubs
FIGURA
3 - Bridges
FIGURA
4 - Switchs
FIGURA
5 - Roteadores
FIGURA
6 - Estrutura
.
.
.
.
16
16
17
.
··
.... 18
....... 19
Geral do Prot6tipo
...........................................
39
LlSTA DE TABELAS
QUADRO
1 - Compara,e.o
entre topologias
.............................•.............................
23
SUMARIO
1 INTRODU<;:Ao..
.
2 REFERENCIAL
2.1 TIPOS
.
.
10
....... 12
TEORICO
DE REDES
DE DAD OS
....... 13
.
.
2.1.1 LAN - Local Area Network
2.1.2 WAN - Wide Area Network
2.2 TIPOS
DE DISPOSITIVOS
2.2.1 Repetidor
13
.
.
DE REDE DE DADOS
15
.
.
15
...............................
.....
15
..16
2.2.2 Hub ..
2.2.3 Bridges
...... 17
2.2.4 Switch
...... 18
..........................................
2.2.5 Roteador
2.3 TIPOS
DE TOPOLOGIAS
19
DE REDE DE DAD OS
19
...... 20
2.3.1 Estrela ..
2.3.2 Anel..
.
2.3.3 Barramento..
2.4 TIPOS
DE PAD ROES DE TRANSMISsAo
2.4.1 Ethernet
22
EM REDE DE DADOS.
.
.
.
2.5.1 SNMP
.
24
DE REDES
.. 25
~
.........................................................
2.5.2 RMON ..
2.5.3 Sistemas
.
de Gerenciamento
2.6 NECESSIDADES
26
OSI
27
DO GERENCIAMENTO
DE REDES.........
2.7 HISTORICO
DO GERENCIAMENTO
DE REDES....
2.8 SOFTWARE
DE GERENCIAMENTO
DE REDES
2.8.1 HP Open View
2.8.2 NetView
.
36
.
.
.
2.8.4 Sun Net Manager ..
3.1 LlNGUAGEM
.
.
.
38
38
39
DE FUNCIONAMENTO
DE FUNCIONAMENTO
3.5 MANUAL
DO USUARIO
3.6 MANUAL
DE INSTALA<;:Ao
3.7 DFD - DIAGRAMA
36
37
...
DE PROGRAMA<;:AO
36
37
.
3.2 PRE-REQUISITOS
3.3 ESTRUTURA
31
.
.
3 METODOLGIA
29
.
.
2.8.3 Spectrum
23
.......... 23
2.4.2 Token Ring
2.5 GERENCIAMENTO
3.4 PRINCIPIO
21
.
DO PROTOTIPO
..
.
39
DO PROTOTIPO
40
.
..
.
DE FLUXO
DE DADOS ..
.
40
.
48
.
63
3.8 DER - DIAGRAMA
DE ENTIDADE
E RELACIONAMENTO
63
4 TESTES.
.......... 64
5CONLUSAO
.
.
REFERENCIAS.
65
.
ANEXO
1 - BIBLIOTECA
PING
ANEXO
2 - BIBLIOTECA
ICMP
APENDICE
1 - Form_Banco
APENDICE
2 - Form_CadastroComputadores
APENDICE
3 - Form_CadGrupos
APENDICE
4 - Form_GeraRelatorios
APENDICE
5 - Form_RelatorioAlivo
APENDICE
6 - Form_RelatoriosPeriodo
APENDICE
7 - Biblioteca
Ping Modificada
.
.
67
.
68
..................
78
................
86
.................
87
.
89
... 91
92
.......... 94
....... 97
10
1 INTRODU<;:Ao
A area de gerenciamento de redes foi inicialmente impulsionada pela
necessidade de monitoragao e controle do universo de ativos que compoem as
redes de dados.
Atualmente as redes de computadores e os seus recursos associados, ali§m
das aplicagoes distribuidas, tem se tornado fundamental e de tal importancia para
uma organizagao, onde
0
tempo de indisponibilidade afeta diretamente 0
desempenho das organizagoes.
Isto significa que 0 nivel de falhas e de indisponibilidade considerados
aceitaveis estao diminuindo, podendo chegar a ate zero, dependendo da importancia
da rede para uma organizagao.
o
gerenciar
objetivo geral deste projeto e desenvolver um prot6tipo que permita
0
estado dos ativos de uma rede de dados. 0 prot6tipo sera desenvolvido
em Delphi para ser utilizado com 0 sistema operacional Windows 2000 ou XP. Os
dados coletados durante 0 gerenciamento serao disponibilizados em banco de
dados Interbase, possibilitando que os administradores de redes reconhegam os
pontes vulneraveis de suas redes e planejar futuros investimentos melhorias em sua
disponibilidade.
Em um primeiro momenta foram realizados estudos com 0 objetivo de
adquirir conhecimento sobre os programas e softwares ja existentes para
gerenciamento. Nesse estudo nao se trata de validar ou invalidar as rotinas de
gerenciamento,
mas de
compreende-Ios e de saber distinguir as implica~6esde
cada um e os metodos que podem ser utilizados para implementa-Ios.
11
Na sequencia do trabalho foi realizada uma revisao bibliogr8.fica com
0
objetivo de fundamentar 0 estado do conhecimento neste presente, com 0 intuito de
se conhecer
0
que js. foi realizado em termos de pesquisa sobre
0
assunto. Esta
fundamenta9ao te6rica foi direcionada ao loco principal deste trabalho, 0 qual e 0
gerenciamento
de redes LAN.
Ap6s a pesquisa para verilicar as principais ideias que lundamentaram 0
tema loi apresentada a proposta que consiste em uma alternativa para 0
desenvolvimento de urn prot6tipo para 0 gerenciarnento de redes LAN.
12
2 REFERENCIAL
TEORICO
Computadores interconectados podem trabalhar mais pelos usuarios, e
quando as pessoas trabalham em equipes, concretizam tarefas inteiras, num menor
espago de tempo e com menos esforgo. Pode-se imaginar uma rede como um
recurso valioso, projetada para apoiar uma equipe de usuarios.
Interconectar os computadores, assim como gerenciar um grupo de pessoas
e sem duvida um desafio. 0
custo pode ter uma enorme variagao. Os beneficios de
se conectar os recursos podem ser grandes e podem significar um avango
incalculavel de beneficios que um micro isolado nunca poderia apresentar.
Atenta aos possiveis beneficios e recompensas, e apesar dos riscos, as
empresas estao interconectando seus computadores em rftimo acelerado.
Antigamente as redes eram de dificil instalagao e manutengao exigindo mao
de obra altamente qualificada, mas atualmente isto esta mudando, hoje encontra-se
componentes de hardware (kits) para instalagao de redes que qualquer pessoa pode
instalar.
Em um ambiente profissional
e
muito importante um responsavel pelo bom
funcionamento da rede, dentre as responsabilidades deste cita-se: coordenar
tarefas,
I
gerenciar
problemas,
manilorar
processos,
administrar
usuarios, entre
outros.
I
I
Sem duvida alguma, um dos maiores beneficios de uma rede
compartilhamento de informa90es entre as usuarios
armazenamento final superior ao que
I
I
OU
e
0
mesma oferecer urn meio de
e utilizado sem a rede.
13
2.1 TIPOS DE REDES DE DADOS
Atualmente pode-se contar com alguns tipos de rede quando a sua
disposigao fisica.
2.1.1 LAN - Local Area Network - Aede de alcance local
Aedes locais (LANs)
sao basicamente um grupo de computadores
interconectados e opcionalmente conectado a urn servidor.
I
I
\I
as
usuarios executam
tarefas a partir de seus computadores. Entre as tarefas pode-se destacar as bancos
de dados, planilhas e editores de texto. Normalmente tem-se urn grupo destes
usuarios executando uma operagao no servidor.
Atualmente
encontram~se velocidades
de
comunicac;ao
das
redes
locais
entre 10 e 100 Mbps (Mega bits par segundo) e 1 Gbps (Giga bits por segundo). A
utilizagao de urn padrao mais veloz estara na necessidade do usuario. Aedes de 100
Mbps e 1 Gbps exigem hardware especial (placas, switchs e hubs).
Aedes de 100 Mbps e 1 Gbps sao recomendadas onde a velocidade
fundamental
necessaria
ao born funcionamenta,
troca
de
normal mente
e
e
utilizada em locais ande seja
informac;oes como som e imagem
au
tambem em redes
maiores.
As redes de 10 Mbps sao instaladas em ambiente onde nao
e
necessaria
executar aplicagoes no servidor com frequencia, pois isto tornaria lenta a velocidade
de comunicac;ao entre os equipamentos.
14
Quanto ao tipo de cabeamento, para as redes de 10 Mbps pode-se utilizar
tanto 0 cabo coaxial (10Base2) ou par tran,ado (10BaseT). Em uma rede 100 Mb ou
1 Gbps necessariamente utiliza-se cabos de par tran,ado (1OOBaseTe 1000BaseT).
Os m6dulos mais importantes de uma rede local sao:
Servidores
-
Sao
processamento, cuja fun,ao
computadores
que
elevam
a
capacidade
do
e disponibilizar servi,os a rede. Em geral essa maquina
processa grandes volumes de dados requerendo por tanto CPUs (Center Process
Units)
rapidas e dispositivos de anmazenamento de alta capacidade e acesso rapido.
Estas maquinas poderao ser fornecidas por fabricantes especializados (IBM®,
INTEL®, entre outros) e par serem maquinas especiais entre as outras, possuem
caracteristicas naD encontradas nos modelos mais simples.
Em uma rede baseada em servidor, tem-se normalmente
operacionais
mais potentes,
sistemas
sen do necessaria urn estudo mais criterioso para a
defini,ao de qual Sistema Operacional utilizar.
!
PC Desktop
(Personal
Computer)
-
Os PCs clientes tambem conhecidos por
I
Workstation
i\
I
II
(esta,ao de trabalho) individuais de trabalho. A partir dela os usuarios
acessam informa,6es
no servidor (Banco de dados, entre outros) e rodam
aplica,6es locais (Microsoft Word, Microsoft Excel, entre outros). 0 hardware
workstation
podem variar, pois dependera das infarma,6es a ssrem processados.
Recursos - Entre as recurses a serem utilizados na Gomunicag8.o entre as
I
equipamentos pode-se citar: os Switchs
II
cabos par-tran,ado, placas de rede, repetidores, Bridges
I
I
da
outros.
(comutadores), os Hubs,
cabo
coaxial,
(pontes), roteadares, entre
15
2.1.2 WAN - Wide Area Network - Rede de alcance remoto
As WANs
utilizam linhas de transmissao oferecidas por operadaras de
telecomunica<;6es,com
0
objetivo de Interliga<;aode computadores geograficamente
distantes. A necessidade de transmissao de dados entre computadares surgiu com
os mainframes, bem antes do aparecimento dos PCs. Com os PCs houve um
aumento da demanda por transmissao de dados a longa distancia. Isto levou ao
surgimento de diversos seNi<;osde transmissao de dados (RENPAC, TRANS DATA,
MINASPAC). Os seNi<;ossao geralmente de aluguel de linhas privadas ou discadas
permitindo a utiliza<;ao de diversos protocolos tais como SNA, PPP e TCP, entre
outros.
Hoje em dia as redes WANs utilizam meios de transmissao de fibras 6pticas
e protocolos de comunica<;ao como
0
ATM (Asynchronous Transfer Mode) que
permitem velocidades acima de 155 Mbps A velocidade passa a ser determinada
pelos equipamentos que processam as informa<;6es (Clientes/SeNidores) e nao do
meio flsico.
2.2 TIPOS DE DISPOSITIVOS
DE REDES DE DADOS
As redes de dados podem ser compostas par diversos dispositivos de
hardware.
2.2.1 Repetidares
Sao equipamentos utilizados quando se deseja repelir 0 sinal enviado par
um equipamento quando a distancia a ser percorrida e maiar do que 0 recomendado
16
(Exemplo
para cabos
UTP 100 metros).
Ele realiza
uma ampliac;ao
no sinal ja fraco
dando nova forc;a para que chegue ao ponto de destino.
FIGURA
1: REPETIDOR
- 2006
FONTE: Projeto de Redes
2.2.2 Hubs
Sao dispositivos
uma LAN. Gom 0 Hub,
chamado
concentrador).
problemas
facilitada,
utilizados
para conectar
as conexoes
0 gerenciamento
da rede
e
uma vez que 0 defeito fica isolado
hub pode receber varios ativos de rede, atualmente
(pode-se
fazer
FIGURA
2: HUB - 2006
FONTE:
os equipamentos
da rede sao concentradas
a conexao
entre hubs aumentando
CISCO SYSTEMS. Inc
que compo em
(por isto tambem
favorecido
e a soluc;ao
no segmento
existem
de
de rede. Gada
hubs entre 4 e 48 portas
a capacidade
final).
17
2.2.3 Bridges
(Pontes)
Seu trabalho
e
evitar
0
numero excessivo de colisoes quando urn numero
grande de computadores compartilham 0 mesmo cabo.
a
bridge
analisa os
endere,os dos pacotes de dados que chegam em cada porta, e transmitem
para a outra porta somente quando concluem que
a
Bridge
0
0
pacote
destino esta neste outra porta.
e uma ponte entre duas redes separadas, que passam a operar
como uma cnica rede. Por exemplo, tem-se LAN da diretoria com a LAN da
produ,ao, cada uma com uma rede local, pode-se utilizar bridges para ligar as duas
redes. Se for inviavel ligar as duas redes atraves de cabos de rede normais, pode-se
usar bridges wireless
(sem fios).
a tr8lego
e estabelecido entre as duas redes, que
passam entao a formar uma unica rede.
FIGURA
3: EXEMPLODE
UTILlZA<;Ao
DE BRIDGES
- 1995
Elhernet TCPI1P
Elhernet TCPIIP
FONTE:
TopoJogia de Redes
18
2.2.4 Switchs
Os switchs
uma
rede,
servem para interligar
possuem
maior
varios computadores
desempenho
que
0
e equipamentos
porque
hub
de
estabelece
dinamicamente ligagaes entre as portas, estabelecendo canais independentes que
podem operar de forma simultiinea. Cada computador tem a rede
a disposig80 ate
100% do tempo. 0 switch opera de forma mais inteligente que 0 hUb. Ele analisa os
pacotes de dados que chegam a ele e descobre os enderegos de origem e destino.
A
partir dar, enviara este pacote apenas para a porta correta.
urn dado
instante
podem
existir
varias conex6es
a
internas
resultado
e que
simultaneas.
em
Este
chaveamento inteligente de conexaes contribui para aumentar 0 desempenho total
da rede e evitando colisaes de dados.
FIGURA 4: Exemplo de Switchs - 2006
FONTE:
CISCO
SYSTEMS,
Inc
19
2.2.5 Roteadores
Fazem 0 papel de guarda de transito, garantindo que os pacotes de mensagens
sejam dirigidos a enderegos
fedes
certos na rede. 0 roteador faz a
diferentes, que podem
inclusive
ter
conexao entre duas
caracterfsticas frsicas e protocol os
diferentes. Uma aplicagao muito comum atualmente
e a ligag80 entre uma rede local
e a Internet.
FIGURA 5: Exemplo de Roteadores - 2006
FONTE: CISCOSYSTEMS,
Inc
2.3 TIPOS DE TOPOLOGIAS
DE REDES DE DADOS
A topologia de uma rede depende do projeto das operagoes, da
confiabilidade e do seu custo operacional. Ao planejar uma rede, muitos fatores
devem ser considerados, mas 0 tipo de participag80 dos nos
e
um dos mais
importantes.
A topologia da rede
e
um nome dado ao arranjo dos cabos usados para
interconectar os clientes e servidores. A maneira como eles sao interligados tem
20
algumas implica90es sabre a maneira como a sistema operacional de rede gerencia
tanto as clientes quanta a fluxo de informa90es sabre a rede, as topologias mais
comuns sao estrela, anel, e barramento.
2.3.1 Estrela
Neste tipo de rede, todos as usuarios comunicam-se com um no central.
Atraves do n6 central,
as usuaries
podem
comunicar~se entre
processadores remotes OUterminais. 0 arranjo em estrela
si e com
e a melhor escolha
58 0
padrao de comunica9ao da rede for de um conjunto de esta90es secundarias que
comunicam-se com 0
no
central. As situag6es en de ista mais aconteee sao aquelas
em que a no central esta restrito as fun90es de gerente das comunica90es e a
opera90es de diagnosticos.
o
no central pode realizar outras fun90es alem das de chaveamento e
processamento normal. Par exemplo:
1. Compatibilizar a velocidade de comunica9ao entre 0 transmissor e a
receptor.
2. Se a protocolo dos dispositivos, fonte e destino utilizarem diferentes
protocolos, a n6 central pode atuar como urn conversar, permitindo duas
redes de fabricantes diferentes se comunicar.
No caso de ocorrer falha em uma esta9ao au no elo de liga9ao com a no
central, apenas esta esta9ao fica fora de opera9ao. Entretanto, se uma falha ocorrer
no no central, todo a sistema pode ficar fora do ar. A solu9ao deste problema seria a
redundancia, mas ista acarreta urn aumento consideravel das custos.
21
A expansao de uma rede deste tipo de rede s6 pode ser feita ate um certo
limite, imposto pelo n6 central: em termos de capacidade de chaveamento, numero
de circuitos concorrentes que podem ser gerenciados e numero de n6s que podem
ser servidos.
o
tempo
desempenho obtido numa rede em estrela depende da quantidade de
requerido
pelo n6 central para processar
carga de trafego de conexao, ou seja,
e encaminhar
mensagens,
e da
e limitado pela capacidade de processamento
do n6 central.
2.3.2 Anel
Uma rede em anel consiste de estagoes conectadas atraves de um caminho
fechado. Nesta configuragao, muitas estag6es remotas ao anel nao se comunicam
diretamente com
0
computador central.
Redes em anel sao capazes de transmitir e receber dados em qualquer
direqao, mas as configuragoes mais usuais sao unidirecionais, de forma a tornar
menos sofisticados os protocolos de comunicagao que asseguram a entrega da
mensagem corretamente e em sequencia ao destino.
Quando uma mensagem
e enviada por um n6, ela entra no anel e circula ate
ser retirada pelo n6 destino, ou entao ate voltar ao n6 fonte, dependendo do
protocolo empregado. 0 ultimo procedimento e mais desejavel parque permite 0
envio simultaneo de um pacole para multiplas eslagoes. Outra vantagem e a de
permitir a determinadas estagoes receber pacotes enviados par qualquer oulra
estagao da rede, independentemente de qual seja 0 n6 destino.
22
AS maiores problemas desta topologia sao relativDs a sua pouca tolerancia a
falhas. Qualquer que seja
0
conlrole de acesso empregado, ele pode ser perdido por
problemas de falha e pode ser diffcil delerminar com certeza se esle conlrole foi
perdido ou decidir qual n6 deve recria-Io. Erro de Iransmissao e processamenlo
pod em tazer com que uma mensagem continue eternamente a circular no anel. A
uliliza,ao de uma esla,ao monilora, conlomar esles problemas. Oulras fungoes
desla esla,ao seriam: iniciar 0 anel, enviar pacoles de lesle e diagn6slico e oulras
larefas de manulen,ao. A esla,ao monilora pode ser dedicada ou uma oulra que
assuma em delerminado lempo essas fungoes.
ESla configura,ao requer que cada n6 seja capaz de remover seletivamenle
mensagens da rede ou passa-Ias adianle para 0 pr6ximo n6. Nas redes
unidirecionais, S8 uma linha entre dais nos cair, todo sistema sai do ar ate que 0
problema seja resolvido. Se a rede for bidirecional, nenhum alivo de rede ficara
inacessivel, ja que podenj ser alingido pelo oulro lado.
2.3.3 Barramenlo
Nesla configura,ao lodos os n6s (esla,oes) se ligam ao mesmo meio de
Iransmissao. 0 barramenlo e geralmenle compartilhado em lempo e frequemcia,
permilindo Iransmissao de informa,ao.
Nas redes em barramenlo, cada n6 coneclado
a
barra pode ouvir lodas as
informat;6es transmitidas. Esta caracterfstica tacilita as aplicat;oes com mensagens
do lipo difusao (para mulliplas esla,oes).
Existe
uma
variedade
de
mecanismos
para
0
controle de aceSSD ao
barramenlo pode ser cenlralizado ou descenlralizado. A lecnica adolada para
23
acesso
a rede e a multiplexagao no tempo.
aceSSD
e
Em controle centralizado, 0 direito de
determinado par uma estat;(ao especial da rede. Em urn ambiente
controle descentralizado, a responsabilidade de acesso
e distribuida
de
entre todos os
n6s. Rel6gios de prevengao em cada transmissor devem detectar e desconectar
0
n6 que falha no momento da transmissao.
o desempenho de um sistema em barramento comum
e determinado
pelo
meio de transmissao, numero de n6s conectados, controle de acesso, tipo de trafego
entre outros fatores. 0 tempo de resposta pode ser altamente dependente do
protocolo de acesso utilizado.
QUADRO 1: COMPARAQAoENTRE TOPOLOGIAS
Tipos de
Ponto Positivos
Pontos Negativos
Topologias
Topologia
Estrela
E mais tolerante a falhas
Fcicil de instalar
usuarios
Topologia Anel
Monitoramento centralizado
Razoavelmente facil de instalar
(Token Ring)
~:~~~P~~~~~~~f~~~e
as problemas sao dificeis de isolar.
Topologia
Barramento
Simples e fcicil de instalar
Requer menos cabos
Facil de entender
A
rede
fica
mais
lenta
em
periodos de usa intenso.
as problemas sao dificeis de isolar.
2.4 TIPOS
DE PADROES
Custo de Instala~ao
maior.
Se uma estac;ao para todas param
DE TRANSMISsAo
EM REDE
DE DADOS
PARA REDES LOCAlS
2.4.1 Ethernet
A rede Ethernet
e a mais conhecida dentre as atualmente utilizadas, e esta
no mercado ha mais tempo do que as outras tecnologias de rede. A redu,ao dos
pre,os e uma relativa alta velocidade de transmissao de dados fomentaram a ampia
24
utiliza<;aoda Ethernet,
que pode ser utilizada com topologia barramento (Coaxial) ou
Estrela (Par tran<;ado).
Neste tipo de rede, cada maquina "escuta" 0 trafego na rede e se nao ouvir
nada, eles transmitem as informa<;oes.Se dois clientes transmitirem informa<;oesao
mesmo tempo, eles sao alertados sabre a cOlisao, param a transmissao e esperam
urn perfodo aleatorio para cada urn antes de tentar novamente, este metodo e
conhecido como Carrier Sense Multiple Access with Collision Detection
(CSMNCD).
Como exemplo, suponha-se se deseje armazenar uma planilha no HD (Hard Disk)
de uma outra maquina. Em Ethernet,
0 primeiro passo que sua placa de rede faz e
escutar 0 que esta acontecendo no cabo para determinar se, no momento, ha
alguem utilizando 0 cabo para transmitir dados. Essa e a parte carrier
sense
(detec<;aode portadora) do CSMNCD.
Se a rede estiver ocupada sua placa continua tentando ate que ela esteja
livre. Uma vez que detecte que nao existem dados trafegando entao ela envia a
planilha para outra maquina. Em caso de colisao, os dados sao perdidos e cada urn
dos envolvidos na colisao aguardam urn perfodo aleatorio para retransmitir na~
ocorrendo perdas para 0 usuario.
Dependendo do tipo de hardware utilizado na rede, 0 numero de colisoes
crescem a medida que 0 numero de esta<;oesaumentam. Uma forma de evitar as
colis6es
e a utiliza<;ao de switchs
na rede.
2.4.2 Token Ring
o
metodo de acesso de token ring (passagem de permissao) utiliza um
metodo circular para determinar qual esta<;aotern permissao para transmitir. 0 token
25
ring opera em topologia em anel e garante que todas as esta,oes da rede tenham
chance de transmitir dados. Ele alcan,a esse objetivo utilizando urn padrao especial
de bit conhecido como token ou permissao.
Em uma rede token ring, seu computador pacientemente monitora a rede ate
que ele veja urn padrao especial de bits denominado permissao. Ao ver a
transmissao ele envia urn pacote de dados. Este pacote de dados viaja pelo anel e 0
destinatario
recebe
na passagem.
Quando
0 pacote
retornar
ao transmissor
ele
passa 0 token para a pr6xima esta,ao. Este processo se repete infinitamente. Os
tempos necessarios sao medidos em fragaes de segundos.
2.5 GERENCIAMENTO
DE REDES
A area de gerimcia de redes, foi inicialmente impulsionada pela necessidade
de monitora,ao e controle dos dispositivos que compoem as redes de comunica,ao.
Com esta crescente necessidade
de gerenciamento,
fez-s8 necessaria
que
padroes
para ferramentas fossem estabelecidos.
2.5.1 SNMP
o
protocolo SNMP (Simple Network Management Protocol - protocolo
simples de gerenciamento de redes) refere-se a urn conjunto de padroes para
gerenciamento que inclui urn protocolo, uma especifica,ao de estrutura de dados, e
urn conjunto de objetos de dados. Este protocolo hoje ja esta na sua segunda versao
oficial, chamada de SNMPv2. E ja existem estudos para 0 desenvolvimento do
SNMPv3. Este e 0 protocolo de gerencia adotado como padrao para redes TCP/IP.
26
Pela sua complexidade, e pela lentidao do processo de padronizagao, este
sistema de gerenciamento nao e muito popular (Stallings, 1993).
o gerenciamento da rede realizado pelo protocolo SNMP, permite que uma
ou mais maquinas na rede sejam designadas gerentes da rede. Esta maquina
recebe informagoes de todas as outras maquinas da rede, chamadas agentes, e
atraves do processamento destas informagoes pode gerenciar loda a rede e detectar
facilmente problemas ocorridos.
As informagoes coletadas pela maquina gerente eslao armazenadas nas
proprias maquinas da rede, em uma base de dados conhecida como Management
Information
Base
necessarias para
(MIS). Nesta base de dados eslao gravadas todas as informagoes
0
gerenciamento deste dispositivo, atraves de varia.veis que sao
requeridas pela estagao gerente.
Entretanto, em uma interligagao de diversas redes locais, pode ser que uma
rede local esteja funcionando perfeitamente, mas sem conexao com as outras redes,
e, conseqQentemente, sem conexao com a maquina gerente. 0 ideal e implementar
em alguma maquina, dentro desla rede local, um protocolo para gerenciamento que
permita um trabalho off-line, isla e, que a rede local possa ser gerenciada, ou pelo
menDS tenha suas informat;6es de gerenciamento coletadas, mesma que estas
informagoes nao sejam enviadas instantaneamente a estagao gerente.
2.5.2 RMON
Para promover uma maior e melhor expansao das tecnologias de rede, era
necessaria urn padrao de gerenciamento de redes mais sofisticado. Com esta
premissa 0 IETF (Internet Engineering Task Force) criou 0 RMON (Remote Network
27
Monitoring MIB) que possui como caracteristicas principais a interoperabilidade
independentemente de fabricante; capacidade de fornecer informagoes precisas a
respeito das causas de falha no funcionamento normal da rede, assim como da
severidade dessa falha; finalmente,
0
novo padrao deveria oferecer ferramentas
adequadas para diagnostico da rede. Alem destas caracteristicas, 0 padrao deveria
oferecer
urn mecanisme
pro-ativa para alertar
0 administrador
dos
eventuais
problemas da rede, alem de metodos automaticos capazes de coletar dados a
respeito desses problemas.
Assim,
0
RMON tornou-se um padrao por volta de 1990. Para ampliar a
capacidade do RMON foi criado
0
RMON II, cujo padrao esta disponivel nas RFCs
(Request For Coments) 1757 e 1531 e apresentam padroes para redes Ethernet e
Token Ring.
2.5.3 Sistemas de gerenciamento OSI
o
gerenciamento no modelo OSI (Open Systems Interconnect) da ISO
(International Sorganization for Standartization) baseia-se na teoria da orientagao a
objetos. 0 sistema representa os recursos gerenciados atraves de entidades logicas
chamadas
de
objetos
gerenciados.
Ao
desenvolver
uma
aplicagao
de
gerenciamento, usa-se processos distribuidos conhecidos como gerentes (que
gerenciam a rede) e agentes (os que realizam as agoes).
o
CMIP (Common Management Information Protoco~ e 0 protocolo de
gerencia do modelo OS!. Trata-se de um protocolo poderoso, robusto e abrangente
(em relagao ao SNMP), que ja foi concebido com 0 objetivo de adequar-se il
28
primitivas do CMIS - Common Management Information Service) permitem a
manipulagao de objelos (criagao, remogao), a leilura e escrila de variaveis e a
notifica~aode eventos.
o
Servigo de Informagao de Gerenciamenlo sao os servigos preslados
a
camada de aplicagao. Eo orienlado a conexao, necessilando de um canal virtual (uma
associagao) para troca de informagoes primilivas oferecidas para as aplicagoes,
manipular objelos. Para a manipulagao de dados gerenciais, al8m da MIS, CMIS e
do CMIP lamb8m sao definidos recursos adicionais que permitem selecionar
0
grupo
de objetos sobre os quais se aplica uma delerminada operagao. 0 scoping, como 8
chamado este recurso, permite selecionar uma sub-arvore da hierarquia de objetos
sobre os quais se realizara uma unica operagao. Por meio dos recursos de filtro,
oulra facilidade do CMIP, 8 possivel definir um conjunlo de tesles aplicaveis a um
grupo de inslancias de objelos (selegao por predicados), que fora anteriormenle
selecionado alrav8s do seoping. Assim sendo, 8 possivel especificar um grupo de
objetos sobre a qual se desenrolara uma operagao de gerenciamento.
Na arquilelura proposta pela ISO, cada camada do modelo OSI 8 associada
a um LME (Layer Management Entity) que pode interagir com a mesma para fins de
gerenciamento. As LMEs sao inlerligadas e coordenadas localmente por um SMAE
(System Management Application Entity) que oferece um conjunlo de primilivas para
as aplicagoes de gerenciamento CMIS e se comunica com outras SMAEs atrav8s do
CMIP.
As primitivas oferecidas pelo CMIS sao utilizadas por MIS-users. Um MISuser pode desempenhar 0 papel de gerenle, agente ou ambos, permitindo a
construgao de uma hierarquia de gerenles, distribuindo a responsabilidade da
29
ger{mcia por varios pontos, possibilitando, inclusive a redugao do trafego de
mensagens entre agentes/gerente.
2.6 NECESSIDADES
DO GERENCIAMENTO
DE REDES
Por menor e mais simples que seja urna rede de computadores, precisa ser
gerenciada, a fim de garantir, aos seus usuarios, a disponibilidade de servigos a um
nivel de desempenho aceitavel.
A medida que a rede cresce, aumenta a complexidade de seu
gerenciamento, forgando a adogao de ferramentas automatizadas para a sua
monitoragao e controle.
A adogao de um software de gerenciamento nao resolve todos os problemas
da pessoa responsavel pela administragao da rede. Geralmente 0 usuario de um
software de gerenciamento espera muito dele e, consequentemente, fica frustrado
quanta aos resultados que obtem. Por outro lado, esses mesmos softwares quase
sempre sao subMutilizados, isto 8, possuem inumeras caracteristicas inexploradas au
utilizadas
conhece-Io
de modo
poueD eficiente.
multo bern e visualizar
Para
gerenciar
claramente
urn recurso,
e
necessaria
0 que este recurSQ representa
no
contexte da rede.
o investimento em um software de gerenciamento pode ser justificado
pelos
seguintes fatores:
As redes e recursos de computagao distribuidos estao se tornando vitais
para a maiaria das organizag6es. S8m urn controle efetivD, as recursos nao
proporcionam
0
retorno que a corporagao requer.
30
a
continuo
interfaces,
crescimento
protocolos
de controle sobre
da rede
em termos
e fornecedores
usuarios,
de componentes,
arnea<;arn 0 gerenciamento
com perda
que esta conectado na rede e como as recursos estao
0
sendo utilizados.
as usuarios
a mesma
esperam
uma melhoria
qualidade),
quando
dos servi<;os oferecidos
novos
recursos
(ou no minimo,
sao adicionados
ou quando
sao distribuidos.
as recursos
grupos
computacionais
de aplica<;6es
e as informa<;6es
de usuarios
nas areas de desempenho,
da organiza<;ao
com diferentes
disponibilidade
geram
necessidades
e seguran<;a.
varios
de suporte
a gerente
da rede
deve atribuir e controlar recursos para balancear estas varias necessidades.
A
medida
que um recurso
fica a sua necessidade
garantir
fica mais importante
de disponibilidade.
para a organiza<;ao,
a sistema
maior
de gerenciamento
deve
esta disponibilidade.
A utiliza<;ao dos recursos
deve ser monitorada
e controlada
para garantir
que
as necessidades dos usuarios sejam satisfeitas a urn custo razoavel.
Alem desta visao qualitativa,
processo
de
gerenciamento
foi
especifica<;ao
de Gerenciamento
pela
dos
maioria
descrever
fornecedores
as necessidades
Contabiliza<;ao
uma separa<;ao
apresentada
de Sistemas
ISO,
de necessidades
como
parte
OSI. Esta divisao funcional
de sistemas
de gerenciamento:
funcional
pela
de
gerenciamento
Falhas,
de
Desempenho,
de
no
sua
foi adotada
redes
para
Configuragao,
e Seguran<;a.
Gerenciamento
Gerenciamento
componentes,
de Falhas: Detec<;ao, corre<;ao e prevehgao
de
Desempenho:
coletar informa<;6es
Redimensionarnento
estatisticas;
de falhas;
da rede
e de
seus
31
Gerenciamento de Contabiliza,ao: Verifica,ao da aloca,ao de recursos e
determinar os custos envolvidos, determinar limites de uso e custos;
Gerenciamento de Configura,ao: Visualiza,ao e alteragao da configura,ao da
rede
e seus componentes,
Gerenciar
0
cicio de vida do sistema
e sua
configura,ao associada;
Gerenciamento de Seguran,a: Protegao contra ataques aos componentes da
rede, gerenciar os mecanismos e procedimentos que proporcionam a
protegao aos recursos da rede, garantir a manuten,ao
da politica de
seguran,a.
2.7 HISTORICO
DO GERENCIAMENTO
DE REDES
Quando em 1986 reuniu-se, pela primeira vez, 0 Grupo de Trabalho sobre
gerenciamento de Redes do Comite T8cnico em Comunica,ao de dados IFIP
(International
Federation
for Information
Procesing)
havia apenas 0 consenso sobre
a necessidade de gerenciamento. Cerca de 20 pessoas reunidas em Dallas,
provenientes
de
diversos
parses, sequer
concordavam
sobre
0
escapo
do
gerenciamento de rede. Para alguns dos representantes, incorporasse apenas as
tres camadas inferiores da arquitetura OSI (pais era com 0 que estavam
acostumados a trabalhar), para os outros 0 gerenciamento de redes devia englobar
as sete camadas. Percebia-se claramente que cada fornecedor tinha construfdo uma
arquitetura proprietaria de gerenciamento para seus produtos e tinha dificuldade de
impingi-Ia aos clientes, ao lado de outros fornecedores. Ja se falava na oportunidade
sobre 0 gerenciamento OSI, embora muitos lenham encarado com certo ar de
duvida aquela alternativa.
32
A abordagem cl;,ssica para integrar
0
gerenciamento de redes era baseada
em arquitetura proprietarias. Para que pudessem funcionar como elemento de
integra,ao, os arquitetos de tais solu,oes incorporaram nelas uma abertura para
agregar a informa,ao de gerenciamento de sistema de outros fornecedores. A IBM®,
por exemplo, com 0 conceito de focal point abriu esta porta para integrar outros
sistemas de gerenciamento ao Netview, principalmente por interesse proprio, uma
vez que a aquisi,ao da RDLM (fabricante de PABX) levou a esta necessidade.
Modulos para traduzir
0
fluxo de informa,ao de gerenciamento de um esquema para
outros tinham de ser constituidos e podiam ser implantados em varios pontos.
Poderia ser um servidor de rede Novell®, com um mOdulo interne capaz de gerar os
"vetores de alerta" esperados pelo Netview. Como segunda op,ao poderia ser a
solu,ao para integrar
0
gerenciamento de um PABX digital em que a tradu,ao seria
feita em um PC que receberia as mensagens de gerenciamento de um lado e as
traduziria, quando passivel, para 0 Dutro. A terceira abordagem seria para 0 caso em
que um roteador fosse 0 diagnostico gerenciado e que utilizasse um protocolo
padrao de fato na industria, tal como 0 SNMP, com a conversao feita internamente
no computador gerenciador.
Dentro dos problemas decorrentes desta solu,ao,
pode-se destacar
principalmente a limita,ao imposta pelo fato de somente usar op,oes gerenciamento
(dados recebidos e comandos veiculaveis) que tinham similar na arquitetura
proprietaria do fornecedor do computador gerenciador. Op,oes
de intera,ao
propiciadas
aproveitadas
pelos
dispositivos
gerenciados
podiam
nao
ser
simplesmente pela falla de condi,oes de mapea-Ias para uma forma passivel de
reconhecimento pelo computador gerenciador. Em decorn§ncia, os dispositivos
gerenciados
providos
pelo
mesmo fornecedor
do
computador
gerenciador
33
"pareciam" mais facilmente gerenciaveis. Para naD parecerem diminuidos sob este
prisma, muitos fornecedores nao S8 mostravam entusiasmados em cooperar para
tamar
seus
produtos
gerenci8.veis
par
urn computador
gerenciador
de
Dutro
fabricante.
Esta abordagem foi adotada por alguns fornecedores no mercado, como a
IBM®
e a DEC®,
mas
cada
vez
mais
crescla
0
deseja
per urn sistema
de
gerenciamento independente de fornecedor que pudesse rodar em uma maquina
dedicada, de modo a nao sobrecarregar nem prejudicar
0
atendimento dos servigos
normais a serem executados no mainframe. A AT&T® tambem entrou no cenario,
definindo uma arquitetura de gerenciamento e se propondo a gerenciar as redes de
seus clientes de telecomunicagoes.
Criando 0 impasse, uma solug8.oalternativa teria de ser buscada, implicando
a agregag8.ode esforgos que levassem a uma solug8.omais universal e padronizada.
Obviamente, tal solug8.o deveria englobar os servigos de gerenciamento mais
importantes e relevantes, al9m de formalizar a interag8.o entre os dispositivos
gerenciados e os gerenciadores. A ISO tomou a bandeira e 0 esquema basico da
arquitetura de gerenciamento de rede foi adicionado ao modelo de referencia
ISOIOSI em 1989.
A
colaborag8.o entre
a
ISO/IEC
(international
Organization
for
Standardization / International Eletrotechnical Committee) resultou na serie de
documentos X.700, cujo objetivo maior 9 criar condigaes para 0 desenvolvimento de
produtos de gerenciamento de redes de computadores e sistema de comunicagaes
heterogeneos.
Porem, 0 embate das forgas dominantes no cenario internacional dificultou a
estabilizag8.odos detalhes para a operacionalizagao do modelo de gerenciamento.
34
Anos se passaram sem que os documentos atingissem
estilgio do padrao ISO
0
internacional. As implantagoes, baseadas em interpretagoes da documentagao
disponivel, comegaram a aparecer e, em 1989, percebendo a necessidade de
acordos
que
assegurassem
a
interoperabilidade
das
implementagoes,
as
fornecedores comegararn a reunir-se em associagoes como a ISO/NM F6rurn, para
buscar um acordo que viabilizasse a definigao de um conjunto de opgoes de
implantagao
capaz
de
assegurar
a
interoperabilidade
dos
sistemas
de
gerenciamento. Dutro grupo foi criado sob a tutela do NIST (National Institute of
Standards and Technology) dos Estados Unidos para atender as necessidades do
governo americano, que jil havia determinado, atraves de seu documento GOSIP
(Government OSI Profile), que as solugoes de redes a serem adquiridas deveriam
atender as recomendagoes ISO/lEG. Este trabalho resultou no GNMP (Government
Network Management Profile), cuja versao 1, de 30 de julho de 1992, constitui a
referencia que tadas as agencias do governo federal dos Estados Unidos devem
usar ao adquirir fungoes e selVigos de gerenciamento de rede.
D primeiro dos protocolos de gerencia de rede foi 0 SGMP (Simple Gateway
Monitoring protocon que surgiu em novembro 1987. Entretanto,
0
a
uma
monitora<;ao
de
gateways.
A necessidade
crescente
de
SGMP era restrito
ferramenta
de
gerenciamento de rede mais gent"rica fez emergirem mais algumas abordagens:
High-Level Entity Management System - HEMS - generalizagao do HMP Host Management Protocol;
SNMP - Simple Network Management Protocol - um melhoramento do
SGMP;
35
CMOT - (CMIP over TCP/IP) uma tentativa de incorporar 0 maximo possivel
o protocolo (CMIP), servigos e estrutura de base de dados que estava
sendo
padronizada pela ISO para gerenciamento de redes.
No inicio de 1988 a lAB (internet Architecture
Board)
revisou os protocolos e
escolheu 0 SNMP como uma sOlugao de curto prazo e 0 CMOT como solugao de
longo prazo para
0
gerenciamento de redes. 0 sentimento era que, em urn periodo
de tempo razoavel,
as instalagoes migrariam do TCP para pratocolos baseados em
OSI. Entretanlo, como a padronizagao do gerenciamento baseado no modelo OSI
apresentava muita complexidade de implementagao e 0 SNMP, devido
a
simplicidade, foi amplamente implementado nos produtos comerciais,
SNMP
0
sua
tornou-se urn padrao de fato. Posteriormente, pela existemcia de lacunas funcionais
(devido
exatamente
a
simplicidade do SNMP), foram definidas novas versoes
do
pratocolo SNMP chamadas de SNMPv2 e SNMPv3, e 0 SNMP original ficou
conhecido como SNMPv1.
A primeira versao
da arquitetura de gerenciamenlo SNMP foi definida no
RFC 1157 de maio de 1990.
o
minimizar
RFC 1157 define ainda tres objelivos a serem alcangados pelo SNMP:
0
numera e complexidade das fungoes de gerenciamento, ser flexivel 0
suficiente para permitir expansoes futuras e ser independente da arquitetura e
mecanisme dos dispositivos gerenciados.
A definigao das informag6es de gerenciamento requer nao apenas profunda
conhecimento
gerenciamento.
da
area
especffica
em
foco,
mas
tambem
do
modele
de
36
2.8 SOFTAWARES
DE GERENCIAMENTO
DE REDES
2.8.1 HP Open View
Plataforma SNMP, eontem programas exeeutaveis que suportam as
chamadas do Kit do Desenvolvedor SNMP. 0 HP Open View Windows,
enderego IP automaticamente e monta
automatiGamente
e cria
um
eXeGU980 SNMP, manuseio
mapa
0
(isto e, descobre urn nodo de rede
layout
incluindo-o).
de traps e uma MIS
descobre 0
Utiliza
tamMm,
biblioteGa
de
acessivel ao usuario final.
A Plataforma SNMP descobre e monitora dinamicamente padroes como:
enderegamento
IP, SNMP
MIS-II
e dispositivos
SNMP.
Os
produtos
de
gereneiamento SNMP proporcionam um ambiente de programagao estavel e
interoperabilidade com outros sistemas baseados em padroes.
2.8.2 NetView
E
uma ferramenta
de gerenciamento
de sistema e de rede que proporciona
fungoes de configuragao, falha e desempenho. Possu; uma plataforma de
gereneiamento de rede aberto que habilita a integragao de aplieagoes SNMP
(Simple Network
Management
protOGOn
e CMIP (Common
Management
Information
protOGOn·
A plataforma NetView
foi desenvolvida para varios ambientes operaeionais :
AIX, VMS, Sun Solaris, AS/400. Este trabalho foi baseado na utilizagao do NetView
no sistema operaeional AIX.
37
2.8.3 Spectrum
E uma plataforma de gerenciamento que fomece independencia de
protocolo e gerenciamento de dispositivos diferentes fabricantes para a integra<;ao
completa de sistemas para grandes empresas. Administra redes ativamente, localiza
e corrige problemas, e informa aos gerentes da rede sobre mudan<;as de status.
Diferente de outras plataformas, SPECTRUM
realmente nao tem problemas para
administrar uma rede. Atraves do usa da Tecnologia de Modela<;ao Indutiva (IMT).
uma forma de inteligencia artificial, SPECTRUM
e capaz de resolver problemas
sobre suas proprias solu<;6es iniciadas. A IMT permite ao SPECTRUM
criar um
modele de cada entidade na rede, incluindo cabos fisicos, aparelhos de redes,
topologias e aplica<;6es. Cada modelo e inteligente, ate mesmo se a entidade que
esta representada nao e inteligente.
2.8.4 SunNet
E
Manager
uma cole<;80 de ferramentas para gerenciamento de redes. Estas
ferramentas provem uma plataforma comum como base para todas as fun<;6es de
gerencia numa arquitetura uniforme, al8m de disponibilizar uma interface de uSutlrio.
A arquitetura SunNet Manager ainda prove um sistema de gerenciamento de
redes que e independente dos protocolos inferiores. Os servi<;os oferecidos nao
fazem quaisquer suposi<;6es sobre os protocolos especificos de rede (TCP/IP oU
UDP/IP) usados para suprir as fun<;6esde transporte de dados.
II
38
A versao 1.0 do SunNet
Network
Computing)
e baseada no ambiente ONC (Open
Manager
da Sun Microsystems,
mas ja existe a versao 2.2.2 conhecida
por Solstice Sun Net Manager.
3 METODOLOGIA
3.1 LlNGUAGEM DE PROGRAMAQAO
Como base para a desenvolvimento deste prototipo foi utilizada a linguagem
de programa9ao Delphi na versao 7. Esta linguagem foi escolhida por ser de alto
nivel
e
possuir
as
recursos
RAD
(Rapid
Application
Development)
-
Desenvolvimento Rapido de Aplicativo, utilizando a linguagem Pascal como padrao,
e tendo diversas comunidades de auxilio e principalmente por utilizar conexoes com
diversos banco de dados.
Uma linguagem que gera aplicativos executaveis rapidos e com tamanhos
reduzidos, comparados com outras linguagens.
Neste prototipo tambem foi utilizado
0
banco de dados Interbase,
devido sua
interopera9ao com 0 Delphi. A distribui9ao deste banco de dados e gratuita. Eo
utilizado 0 FireBird, um SGBD (Sistema Gerenciador de Banco de Dados ) que e um
produta de C6digo Livre desenvolvido sobre licensa Interbase
o
FireBird
License.
oferece uma excelente solu98.0 como sistema gerenciador de
bancos de dados de alta performance. Alem disso
0
FireBird
Ihe oferece excelente
concorrencia de acesso, alta performance, e uma poderosa linguagem com suporte
a stored procedures
e triggers de bancos.
39
3.2 PRE-REQUISITOS
Para se utilizar 0 prot6tipo e necessario a instala,B.o das bibliotecas PING
(Anexo 1) e ICMP (Anexo 2). desenvolvidas por Fran,ois Piette e disponibilizada
gratuitamente sem qualquer restri,B.o de uso. Estas duas bibliotecas foram a base
para 0 desenvolvimento deste prot6tipo.
3.3 ESTRUTURA DE FUNCIONAMENTO DO PROTOTIPO
FIGURA 6: Estrutura Geral do Prot6tipo
o prot6tipo, atraves de uma rede TCP/IP, executa testes dos acessos ate os
ativos de rede, atraves do envio de um pedido de eco ICMP e da espera por uma
resposta.
40
3.4 PRINCiPIO DE FUNCIONAMENTO DO PROTOTIPO
o
prot6tipo esta baseado no comando ping
do sistema operacional. 0
mesmo envia para os ativos de rede de destino um pedido de resposta para suas
requisigoes, as quais sao mostradas na tela e armazenadas em banco de dados
para futuras analises. 0 prot6tipo continuara a verificagao ate a interrupgao pelo
usuario. Obtendo au nao as respostas
solicitadas
0
prot6tipo armazenara
as
resultados no banco de dados.
Este prot6tipo permite realizar a verificagao especffica de um ativo de rede
ou de um grupo. Os resultados dos testes podem ser visualizados e impressos
selecionando um ativo de rede ou todos ativos de rede por perfodo.
3.5 MANUAL DO USUARIO
o
Programa pingtst.exe e um prot6tipo desenvolvido em Delphi, e utHiza 0
banco de dados Interbase.
E necessario que
0
computador esteja ligado em algum
ativo de rede (modem, Hub, Switch, Roteador ou outra estagao de trabalho).
Configurag6es Mfnimas:
Sistema Operacional: Windows (2000 e XP)
Estagao: Pentium 233 ou superior
Mem6ria RAM: 128MB
Rede: TCPjl P
41
Cadastro
de Grupos
Menu Cadastro
/ Grupos
IrijlHi"ffltiij.;;;, 0'
Clique no
+ para
adicionar
um registro em branco,
C6digo
Nome do Grupo
Descrigao
o campos
C6digo e Nome do Grupo sao obrigat6rios
Para confirmar
clique no
Para Cancelar clique )(
v'
depois preencha
as campos:
42
Cadastre
Ative
de Rede
Menu Cadastre
/ Alive de Rede
Cooastro
c&:!. Computador
"Co:.:' do.:'
G:.:'u:::.po'-
--,
I!.
p
:::oJ
r.IT~"OO~---r.1'~~~,l~~~,O~,'~93~---'
1
Host
Escola
lP
Descricao
11omputadc:x
Secretalia
Athoo 2.4 GH I
de Planeiamento· SEMGE
Departamento de Planeiamento
Oro;:ament"rio'
DEPlO
1
List"
1?'SCAICAO
ComputadOi Atnon 2.4 GH IISeaetalia de Plam
Clique no
+ para
adicionar
um regislro
em branco, depois
C6digo
Grupo que esle Alivo de rede fara parte
Nome do Alivo de Rede (Host) e Descri9ao
Todos campos acima sao obrigat6rios
II
Para confirmar
clique no ~
Para Cancelar
clique x
preencha
os campos:
43
Teslando
urn Alivo de Rede
Verificar se esta ativo
~adastro Eerramentas
I G,...., I
I c••••.•""
rlAli"d,rede
I.L'
0
item Computador
~
_
_
~'
~
Eo:; I
Resultados
1P:192.168.0.193
111P:192.168.Ul93
192.168.0.2
II~P:
!
I
I
I
Tamanhodo pacole:
Tamanhooopacote:
THI'IaIlOOdo pacote:
I:~:~K~:~:~
.'nie$$i~~amodopacote:
IP:1Ul.1
I
TarMnhodopacote:
lP:ln.17.0.4
I
T~dopacole:
1P:172.17.0.4
I
Tamamodopacole:
Preencher
64
64
64
I
I
0
0
64
64
I
I
I
Oms
Oms
Oms
3ms
Jms
101m
I
Oms
a lacuna em branco Ativo de Rede com:
Enderego
de rede do ativo de rede ou
Nome do ativo de rede.
Teslando
a disponibilidade
do alivo de rede.
Clicar no botao Testar.
o programa
ficara teslando
se
0
alivo de rede esla disponfvel
em banco de dados os resultados.
Para Parar devera obrigatoriamente
II
clicar no botao Parar.
ou nao e registrando
44
Testando
um Grupo
Verificar
a disponibilidade
Escolher
Testando
dos ativos de rede cadastrados
no grupo escolhido
0 grupo a ser testado
a disponibilidade
do ativo de rede no grupo.
Clicar no botao Testar.
o programa
registrando
ficar"
testando
se os ativos de rede estao disponfveis
em banco de dados os resultados.
Para Parar devera
obrigatoriamente
clicar no botao Parar.
ou nao e
45
Listando os resultados por Grupo
Podera selecionar as opgoes conforme figura a seguir
c~lIstrolFerri!lmentas
~ad~AtivQde,ede:
I
Sair
Resukados
--
~-
--
Op,ao Ativo de rede
II
46
Apes colocar
0
enderego do alivo de rede e clicar no botiio Imprimir oblera
um relaterio em tela que poder" ser impresso.
Relatorlo de Disponlbilidade
do Atlvo de Rede
12,00
!2.ao
0,00
H••
Oatl
Rupostll.
192.168.0.193
192.168.0.193
192.1611(1.193
192.168.0.193
l1fl1nOOS
16:15:35
111111200616:15:35
192.168,0.1113
11111/200619:01:51
11/11120011
18:01:51
111111200618:01:53
111111200618.01:53
11/111200& 19.01:55
1111112006
18.01:55
o
o
o
o
o
o
o
o
o
o
o
o
192166,0.193
192.168.0.193
192.168.0.193
192.168.0.193
192.168.0.193
192.169.0193
192.166.0.193
11111/200615:15:37
l1111n006
16:15:37
',/11!200615:25:19
11/!WOOS
15:25:19
Opgao Periodo
't! Relatorlo
1\
de Disponibilidade
dos IP por periodo
47
Ap6s seleeionar 0 periodo que deseja-se verifiear cliear no batao Imprimir e
tera um relat6rio das disponibilidades de todos os ativos de rede testados no
periodo.
Disponlbilidade dos Ativos de Rede del111112006a 11/11/2006
H••
0 ••.•
RespOita
192.168.0.193
111111200616.15:35
11111(2006
16:15:35
0
0
0
0
0
0
192.169,0.1113
'92.166,0.193
192.168.0.193
192.168.0.2
192.1BB,O.2
10.1.1.1
1111112006
16:15:31
111111200616:15:37
ll111f2006
16:15:46
111111200618:15:46
l1111f200ti
16:15:58
10.1.1.'
10.1.1.1
10.1.1.1
10.1.1.'
1011.1
111111200618:1556
l111Jnllll6
16:15:58
1111112006
16:15:59
11111120rn;
16:16:00
SRY:ms
11111/2006
18:1617
l1f11120M
16:16:17
11111(2006
16,16:19
111111200619:0151
1111112006
19:01'51
1111112006
18:01:53
11111120(}8
19:01.53
1111112006
18:01:55
SRV-lHB
SRY-1RIB
192.168,0.193
192.168.0.193
1112.168.0.193
192.168.0.193
192.168.0.193
1111112006 16:16.00
4194324
,,
,,
,,
4194324
0
0
0
0
0
0
Ap6s seleeionar a periodo que e desejar eliminar estas informa,Des podera
cliear no batao Apagar e sera eliminado estas informa,Des do banco de dados com
a mensagem a seguir no final da opera,ao.
x
Dados apaQad05 com sucesso.
48
3.6 MANUAL
Executar
0 arquivo
DE INSTALACAO
pingtst.exe
e pressionar
em Next (Pr6ximo)
Welcome to the InstallShield Wizard for
Prot6tipo Ping
The InstaiIShield(R) Wizard wil instan ProtOtipo Ping 00
complter. TOContinUB, dick Next.
YOIX
WARNING: This program is protected by copyright law and
international treaties.
Selecionar
-:.
,
a oP9ao Typical
(Tipica) e pressionar
em Next
.
Setup Type
Choose the setup type that best suits YOlJ' needs.
P1e~e select a setup type.
r.lfii»~
tfi
r
features
!MIl be
installed.
..m
the
most
disk
Minimum
required
features
will be lnstaUed.
(u!tom
t@
Choose ~Ich progrllm features you want Instliited o!Ind where they
wiUbe Installed. Recommended for ad ..••
anced users.
!rY..taI15hleld-----:--"-
__
:;;;--;:~___;==::::=;_;:-----___;_
< §.o!ICk
l\
(Requires
space.)
t:1inimal
~
r
An prOf7am
Next>
I-
C.!Incel
49
Pressionar
em Finish
(Finalizar)
para termino
da instala"ao
InstaliShield Wizard Completed
Set~
has finished Installing Prot6tipo
Pi1g.
Some program files might have been updi!lted
purchased your copy of Prototipo PiI1l;l.
since you
Your Internet connection can be used to make sure that you
have the I.!Itest updates.
:t.es, check for program lJll(kItes (Recorrmended)
.!Ifter the setup completes.
Cilnctil
Executar
a aplicativo
instalador
do Interbase
6.0 ib_wi_os_020204.exe
em Next
This instaUlltion prowam will installlnterBase
6.0.
button to stalt the instaUation You can preu
the Cancel button now if you do not want to install JntelBase
Pren the Next
6.0 at this time,
e pressionar
50
Pressionar
em
f Agree (Eu Concordo)
Use of Inter8ase 6.0 isreslricled by the terms of the InterBase
Public License. If you agree with tnese lerms. select " Agree"
to continue installing.
INTERBASE
PUBLIC LICENSE
VersionlO
1. Defnitions.
1.0.1. ''Commercial Use" metlns distribution or otherwise
making the Covered Code available to a third party.
, .1. "Contributor" means each entity that cleates or
conllibul:es to the aeation of Mod{~ions.
, .2. "Coniributo/ Version; means the combination of the
Original Code, Plior MociflCations
used by a CoobiblAOI.
and Ihe Modifications made by that particular Contributor.
1.3. "Covered Code" means the Original Code or
Modifications or the combination of the Original Code and
Mod"lficatiom, in each case inducing portions thereol,
1.4. "Electronic Distribution Mechanism" means a
mechanism
Pressionar
em Next
get1efelly accepted
para continuar
a
instalac;ao
Select Destination
Please
..:.Jl
in the softwere
Folder
select the folder where lnterB05Se 6.0 tiles ale to be
installed.
''Free Disk Space Aftellnst~II" is based on your current
selection of lies to instal A nega~ .••
e numbef indicates
there is not enough disk space to instaU the application
specilied drive.
<~ack
~
thaI
to the
51
Pressionar
em Next
para continuar
a instalal1ao
Select Components
Choose which components to install.
P' InterB~se SelVer lor Windows
5053k
1249k
852k
2159k
52Sk
Ok
2421 k
Pressionar
em Next
para continuar
a instalagao
ModifY Start Options
P' Add InterBase shortcuts to Start Menu
P' Start IntelBase Server alter installation
P' StarllntelBase when computer rest~lls
<~8ck~~
\ \
52
Pressionar
em Next
para continuar
a instalagao
Ready to Install!
You are now ready to install lnterBase
6.0.
Press the Next button to begin the installation
button to reenier the installation information.
7%
Cancel
II
01
the Back
53
Pressionar
em Finish (Finalizar)
para termino
da instalagao
Installation Completed!
The in;tell.ation oIlnterBo!Ise
has been successfully
completed
Press the Finish button 10 finish the imlalalion.
Selecione
no botao do Menu Iniciar
I Programas
I interbase
6.0
I ibconsole
lOobJectd.ted
p.
54
Selecione
con>Ol<>
InterBase
\/low
s..rv..
0 •• _
I Register
Servers
••
10010
W'roQoW<
J~()"I"'"'I,1."'·
·::-riJ·
Help
~_J_R"""II>Jio!ll.j.".tAe"a
••~dJ ~.
;;;::.~.-,~
~,-
Selecione
escreva
Name
a opg8.0 Local Server
Ping e selecione
(Nome
masterkey
do Usuario)
(minusculo)
(Servidor
0 valor SYSDBA
e pressione
SerVeflnfounalion
r.
!,ocalServer
r, BemoteServer
r;;; .s.~e A~a~Information
L"OiO,rn".m'<i"o
f
JJ.ser Name:
ISYSDBA
E/!!Iss.word:
"••"'••"'."""'
••-------
Local).
no Campo
a opg8.0 Save Alias Information.
e no campo
OK para continuar
Description
(Descrig8.o)
Preencher
no campo
Password
(senha)
a instalag8.o.
User
0 valor
55
Pressionar duas vezes Local Server
11f'J"f'J"11t
'Ii
I~,'" .
Serao mostradas
s-f}:J
~o
•••••
·
OP90es apos pressionar
Local Server
InlelgeleSer~ert
e·~
LOC4ISetvet
!_~
Oellll: ••.
n~
~-fied-uP
Ll!)SerV!llLog
L~Ulet,
L090Ut
lOQ!U!romlheturenitervet
Ule.S«tri)o
M~lnle.e6IeU.et.
Propertiltl
VoewServerprapeltie.
56
Selecione
Databases
/ Register
No campo
File (arquivo)
preencha
campo Alias Name preencha
Information.
Preencher
o valor masterkey
pressione
com
no campo
(minusculo)
OK para continuar
com 0 valor C:\Projeto
0
valor PING.GDBe
User Name 0 valor SYSDBA,
e no campo
Default
a instalagao
f<lo:
IC:\Proi"to
'"
Ping\Ping\PING_GD8
,S.••v" A~••
* Inlormel>on
Login InrOfmolion
jSYSDBA
Defovlt Ch"""cte,
~ ••t
Ping\PING\PING.GDB,
selecione
-"
Character
no
a opgao Save Alias
no campo
Set
0
valor
Password
ASCII
e
57
Pressionar
duas vezes DataBases
ap6s pressionar
Iii 1!.!3ftM
1;.01'1001&:lie•• ~o,
Io!o,.w-
1001<
!tlh~ow>·.1j6Ip
duas vezes PING.GDB
M*E3
~J,t, ••·
U~rI"liI
~r~::ISs";::
EH~~
I~HI~'
DS.o!>"o••,
I 8'fePlNG_GOB
f"o~ •••
I' an Tobie.
(-ceQ v __
I
t,.,SI"'edP'o<:od",,,'
··..
fx
I
I
---ill
,···e BlobFilte,.
L__'tJRoIeo
Sno.-dolob<!.epropertie.
D;';pl.'>yd",,,b,,.,,slati.lic.
Shutdown the dol"b"se
Sweep
T,,,no'tClion Recove,y
PeoiOlm"dolabe."
••••
""II
Recover ~mbo I'an'.-clion.
View Dat ••b", ••Mel"~,,
E.,ern<olF...-.clicn •
...~Gen"'''lors
Except"",
!
Properti".
DropOo'obl> •••
D'op'h"c •.••
'"nt<!olob" •••
eeckupeninlerB••
,edS"b",,,
Vie", a bt 01u,,,rt cunently co....,.,"'edtothe.e''''''
~B"ckup
::® ~:::Log
Pressionar
duas vezes Tables, sera mostrado
dados ja esta instalado
as tabelas
utilizadas.
0 banco de
58
Pressionar duas vezes
0
arquivo Firebird_DDBe _'.2.0.69-Win32.exe
e pressionar
em Next para continuar a instalagao.
Welcome to the Firebird
Driver Setup Wizard
OOBe
Tl'is will install Firebird DOBe Drivel 1.2.0.69
onyour
II is reconwnended
continuing.
that you dose al othel' applications
Click Next to continue,
computer.
before
01 C-'lncel to exit Setup
Marcar a opgao I accept the agreement e pressionar Next para continuar a
instalagao
license
Agreement
Please
re~d
Please
read the foUowing License Agreement.
agreement
the following
before
important
continuing
information
before
continuing.
You must
i!lccept
the terms of thi$
with the instolfotion.
Initial Developer's PUBLIC LICENSE
Version 1.0
1. Definitions
1.0 "Commcrci.!ll Use" means disliibulion or otherwise makng
Code i!lvl!lai!lble to a third party.
,., "Contributor" rnMns each entity that crci!ltes or contributes
cre!!ltionof Modilico!Itions.
r- [Ci~£@'~~i~;~~~~
r
1£10I"lOl:
~ept
the ~reemenl
the Covered
to the
59
Pressionar
em Next
para continuar
a instala<;ao.
Information
Please read the /oDowing important. informo!ltion before continuing
When you are ready to cont.inue with Setup, click Next.
The IBPhoenix Firebird DDSC Driver Installation
The inslaUe. p!'esent.s 3 installation options:
o Developer Install
o Deployment Install
o Documentation InstalJ
General Noles on instaning the Driver
ODBC Drivers live in the WINDOWS System32 «syS) I directory. When the
insto!llierprompts you to choose an insto!lllation directory it is really
asking you where you W.!Jnt the document.o!Ition installed.
Pressionar
em Next
para continuar
a instala<;ao.
Select Destination
Location
Whele snould Firebild DOBe Driver be instaled?
D
Setup will install Firebird OOBe Driver inl:o the following folder.
To continue. cick Nexllf
you woud ~e to select a different folder. click Browse.
At leo!ld.0.2 MB of flee disk space is reqLired
II
..::J
60
Pressionar
em Next
para continuar
a instala9ao.
Select Components
Which components should be instaned7
Select the components you Wo!Intto insto!ln;clear the components
install C~ck NeKt when you are leady to continue.
Itmbfti#[email protected]!m
you do not Wo!Intto
IIntfflitilififflitfflfflMi,',
I I.ibiui.
ii!:::::J
<!!aCk~~
Pressionar
em Next
para continuar
a instala9aO.
Select Stalt Menu Foldel
Where should Setup place the pro!J'o!IIT1'smortcuts?
~
'Ulli
Setup will aeale
To continue.
lne program's shortcuts.,
click NeHl 1/you would ike to ;elect
the !olewing SIMI Menu !oIder.
011
direren! foldel, click BrowsCl.
61
Pressionar
em Install
para continuar
a instalac;ao.
Ready 10 Inslall
Setup is now ready to begin installing Fifebird OOSC Driver on your computer.
Click Insl.,)1 to conlinue
change any settings.
with Ihe installalion, or click Back if you went
10
review
01
Deslinationlocation:
C:\Arquivos de progr~mas\FifebiJd\Fisebifd_DDSe
Setup type:
Developer
instan· register driver in System
Oil.
Instan document~tion
S elected components:
Instaldrivetto<s~)
Documentation
in Gll¥! and HTML format
Start Menulolder:
F"ebird\Filebird
Pressionar
em Next
ODSe Driver
para continuar
a instalac;ao.
Inlormation
Please read the foUowing important infO/maHon before continuing
When you are ready to continue
with Setup, dick Next.
~ilebird DOSC Driver v1.2.0 Readme
(\IIin32)
o What's new
olnstaDaiion
oConfigUialion
o Known Issues
o Feedback
What's
New
Welcome to the latest release 01 the Firebird oose drivel. This release
sees many significant advances in !he driVE!!".Notable changes afe:
to progr~m ..
62
Pressionar
em Finish
para termino
da instalagao.
~m.~mm3m=-"aE~========-r~~
Completing the Firebird ODBC
Driver Setup Wizard
Setup h.!l$ finished installing Firebird DOBe Driver onyout
computet. The appli~tion may be I!lunched by selecting the
installed icons.
Click Finish to eMit Setup.
<.6.ack
~
63
3.7 DFD - DIAGRAM A DE FLUXO
DE DADOS
Resultados do Teste
3.8 DER - DIAGRAMA
DE ENTIDADE
I TbHistorico
E RELACIONAMENTO
cscri<;i'io
p
II
64
4 TESTES
Apos
0
desenvolvimento
do prototipo,
de rede e grupo, bern como a visualizagao
Na opgao
ativo de rede 0 teste
realizou-se
testes nas opg6es
de ativo
dos relatoriosgerados,
e executado
utilizando
urn enderego
IP ou
seu "nome".
Na opgao
grupo,
Para os testes cadastrou-se
Ap6s
geragao
a
realizou-se
testes
com
30 ativos de redes cadastrados,
alivos de redes utilizando
realjza~ao dos testes,
verificou-se
enderegos
IP e "nomes",
0 correto
funcionamento
na
dos relatorios,
Em todos os testes obteve-se
do prototipo,
0 comportamento
e os resultados
esperados
65
5 CONCLUSAO
Durante 0 desenvolvimento do projeto fez se necessario a ampliagao sobre 0
conhecimento na area de redes e de programagao atraves de pesquisas, bem como
foram possiveis a utilizagao dos conhecimentos adquiridos em sala de aula.
Utilizou-se para 0 desenvolvimento deste prot6tipo a linguagem de
programagao Delphi. Foi observado ser uma Iinguagem robusta, a qual possibilita
uma boa definigao gratica, alem de ser de facil aprendizado e utilizagao. Foi
verificado que esta linguagem gera aplicativos de tamanhos reduzidos, logo de
rapida execugao. Com relagao ao banco de dados Interbase, foi utilizado devido a
sua interoperagao com 0 Delphi e por ser de distribuigao gratuita. Porem foram
observadas diferengas na execugao dos comandos Sal entre Paradox e Interbase.
A corregao destas diferengas entre comandos foi realizada atraves de pesquisas e
f6runs na internet.
o prot6tipo como um todo obteve uma boa performance. A sua operagao foi
de forma continua, au seja, naG ocorreram ''travamentos''
no prototipo nem queda de
conexao com 0 banco de dados. Desta forma, dados nao foram perdidos durante
sua coleta,
0
que aumenta a confiabilidade das informagoes obtidas. Conciui-se que
os ativos de uma rede de dados podem ser gerenciados com a utilizagao deste
prot6tipo.
Devido ao prot6tipo ser de desenvolvimento e distribuigao gratuita, possui
urn grande diferencial quando comparado aos softwares existentes no mercado,
sendo assim, pequenas e medias empresas podem utiliza-Io no gerenciamento de
suas redes.
66
Como pr6ximos Irabalhos podem-se desenvolver novas funcionalidades,
denlre elas:
Gerenciamento grafico
Novas tipos de relat6rios
Gerenciamento simultaneo de grupos
Desenvolvimento para Sistema operacional Linux
67
REFERENCIAS
CARVALHO,
Tereza Cristina Melo de Brito. Gerenciamento
abordagem de sistemas. Sao Paulo: Makron Books,1993
OSIER,
1988
BATSON
TANENBAUM,
E GROBMAN
Andrew
-Aprenda
de redes: uma
em 14 dias Delphi 3 - Editora
S. - Redes de Computadores
- Editora
Campos,
Campus,
1997 - 3°
edi~ao
YURI Di6genes - Certifica~ao Cisco - CCNA 4.0 - Guia de Certifica~ao
Exame #640-801 - 3° edi~ao - Editora Axcel Books
MARTINS
Marcondes,
Agnaldo
Lopes, MARAN I Sandro
Paulo - Apostila
de TCP/IP
- Topologia
Para 0
de Redes - 1995
-1996
Projeto de Redes. Disponivel em:
http://www.projetoderedes.com.br/tutoriais/tutorial
Acesso em 29 out 2006.
eguipamentos
de
redes
01.php.
CISCO SYSTEMS, Inc - Disponivel em:
http:lLwww.cisco.com/en/US/products/ps6021Iindex.html.
Acesso
em 29 out 2006.
CISCO SYSTEMS, Inc - Disponivel em:
http:lLwww.cisco.comlenIUSlproductslps6545Iindex.html.
Acesso
em 29 out 2006.
CISCO SYSTEMS, Inc - Disponivel em:
http:lLwww.cisco.com/en/US/products/ps5854/index.html.
Acesso
em 29 out 2006.
Projeto de Redes. Disponivel em:
htto:lLwww.orojetoderedes.com.br/artigoslartigo
utadores.php.
Acesso em 29 out 2006.
Projeto de Redes. Disponivel em:
http:lLwww.projetoderedes.com.br/tutoriais/tutorial
Acesso em 29 out 2006.
RMON. Disponivel
set 2006.
CMIP. Disponivel
set 2006.
gerenciamento
equipamentos
de redes
de redes
de comp
02.php.
em: http://www.rnp.br/newsgen/9901/rmon.htmI.Acessoem
10
em: http://penta.ufrgs.br/gr952/trab1/z_cmip.htmI.Acessoem
12
GERENCIA.
Disponivel
em 26 set 2006.
em: http://www.rnp.br/newsgen/9712/gerencia.html.
Acesso
68
ANEXO
Author:
Description:
1 - BIBLIOTECA
Fran<;:ois
PIETTE
This
unit
encapsulate
Using
this
object,
PING
you
the
ICMP.DLL into
can easily
ping
a veL of type
TPing.
any host
on your
network.
EMail:
francais.
francais.
vlorks
only in 32 bits
mode (no Delphi
1) under
NT or 95.
If you wants
to build
a console
mode program,
use the TICMP
object.
You'll
have a much smaller
program.
http://users.swing.be/francais
. piette
[email protected]
http://www.rtfm.be/fpiette
piet [email protected]
francais.
[email protected]
January
6, 1997
1.11
Use the mailing
list
[email protected]
See website
for
Creation:
Version:
Support:
details.
Legal
issues:
Copyright
(e) 1997 - 2000 by FranGois
PIETTE
Rue de Grady
24,
4053 Embourg,
Belgium.
Fax:
<francois.
[email protected]
. be>
This
software
is
implied
warranty.
for any
damages
provided
In no
arising
2.
74.56
I as-is
I,
without
any express
event
will
the author
be held
from the use of this
software.
Permission
is granted
to anyone
to use this
purpose,
including
corrunercial
applications,
and redistribute
it
freely,
subject
to the
restrictions:
1.
+32-4-365
software
and to
following
or
liable
for
alter
any
it
The origin
of this
software
must not be misrepresented,
you must not claim
that
you wrote
the original
software.
I f you use this
software
in a product,
an acknowledgment
in the product
documentation
would be appreciated
but
not required.
Altered
source
versions
must
be
plainly
marked
as
is
such,
and
must
not
be
3.
This
notice
distribution.
<1.
You must
misrepresented
may not
register
be
this
as
removed
software
being
or
the
original
altered
from
by
sending
software.
any
source
a picture
postcard
to
the
author.
Use
a nice
stamp
and
mention
your
name,
street
address,
Updates:
Nov 3D,
Dec 13,
the
1997
1997
May 05,
1998
EMail
VI 00 Added
VI 01 Added
address
and
DNSLookup capability
OnEchoRequest
and
any
comment
you
like
to
say.
(taken
from TV1Socket)
OnEchoReply
events
and removed
corresponding
DnDisplay
event.
This require
to modify
existing
programs.
Vl.02
Changed
lpszClassName
from
I XSocketWindowClass'
to
1 ICSPingNindowClass'
to avoid
class
name conflict
l'iith
TWSocket.
Thanks
to
8ill
Parke
<[email protected]>
who found
the
69
Dec
26,
1998
problem.
VI.IO
Changed
and added
an
24,
1999
object
(this
was the sender
in previous
version).
This
require
modification
of existing
code.
Vl.ll
Surfaced
Flags
property
to allow
fragmentation
check
(f'lags
= $02
to enable
fragmentation
check)
Vl.12
Changed
argument
name from Error
to Status
in
all
events
to make sender
argument
•Icmp'
which
point
reference
to the
TPing
object
underlaying
Tlcmp
Jan
Nov 10, 2002
OnEchoReply
to
unit
better
reflect
his
use.
0 means
OK
!
Ping;
I$IFDEF
VERBO)
/1 This source
file
1/ IHn 32 features.
{$ENDIF}
is
*NOT* compatible
with
Delphi
1 because
it
uses
interface
uses
l'hndows,
Messages,
SysUtils,
Classes,
Ivinsock,
canst
PingVersion
= 111;
CopyRight
String
='
TPing
(cl
1997-2000
~'JM_ASYNCGETHOSTBYNAME= viM_USER + 2;
Icmpi
F.
Piette
Vl.l1
type
TDnsLookupDone
= procedure
(Sender:
TObject;
Error:
I'lord)
of object;
TPingDisplay
= procedure
(Sender:
TObject;
Icmp:
TObject;
Msg
String)
of object;
TPingReply
= procedure
(Sender:
TObject;
Iemp:
TObject;
Status
Integer)
of object;
TPingRequest
= procedure
(Sender:
TObject;
Icmp:
TObject)
of object;
TPing
'" class
(TComponent)
private
TICMP;
ncmp
Hl-lNO;
f1'lindowHandle
array
[0 .. MAXGETHOSTSTRUCTJ of char;
FDnsLookupBuffer
THandle;
FOnsLookupHandle
String;
FDnsResult
TDnsLookupOone;
FOnDnsLookupDone
TPingRequest;
FOnEchoRequest
TPingReply;
FOnEchoReply
TPingDisplay;
FOnDisplay
protected
procedure
l-~ndProc (var
MsgRec:
TMessage);
procedure
I-IMAsyncGetHostByName
(var
msg:
TMessage);
message
I'JM ASYNCGETHOSTBYNAME;
- procedure
SetAddress
(Value
String);
function
GetAddress
string;
procedure
SetSize
(Value
Integer)
;
function
GetSize
Integer;
procedure
SetTimeout
(Value
Integer);
function
GetTimeout
Integer;
function
GetReply
TIcmpEchoReply;
function
GetErrorCode
Integer;
70
function
function
function
procedure
function
procedure
function
procedure
procedure
procedure
public
construCtor
destructor
function
procedure
procedure
GetErrorString
String;
GetHostName
String;
GetHostIP
String;
SetTTL{Value
Integer);
GetTTL
Integer;
Setflags
(Value
Integer)
;
Getflags
Integer;
IcmpEchoReply(Sender:
TObject;
Error:
Integer);
IcmpEchoRequest
(Sender:
TObject);
IcmpDisplay(Sender:
TObject;
Msg: String);
property
property
property
property
property
property
property
published
property
Reply
ErrorCode
ErrorString
HostName
HostIP
Handle
DnsResult
TIcmpEchoReply
Integer
String
String
String
HNND
String
Address
String
Size
Integer
Create
(Owner
TComponent);
Destroy;
override;
Ping
Integer;
DnsLookup(HostName
String);
CancelDnsLookup;
override;
virtual;
read
read
read
read
read
read
read
read
write
read
write
Timeout
Integer
read
write
TTL
Integer
read
write
Flags
Integer
read
write
OnDisplay
TPingDisplay
read
write
OnEchoRequest
TPingRequest
read
write
OnEchoReply
TPingReply
read
write
OnDnsLookupDone
TDnsLookupDone
read
write
property
property
property
property
property
property
property
property
GetReply;
GetErrorCode;
GetErrorString;
GetHostName;
GetHostIP;
f'WindowHandle;
FDnsResul t;
GetAddress
SetAddress;
GetSize
SetSize;
GetTimeout
SetTimeout;
GetTTL
SetTTL;
Getflags
SetFlags;
FOnDisplay
FOnDisplay;
FOnEchoRequest
FOnEchoRequest;
FOnEchoReply
FOnEchoReply;
f'OnDnsLookupDone
FOnDnsLookupDone;
end;
procedure
Register;
implementation
I'"
••••••••••••••••••• , ••••••••••••• '}
procedure
Register;
begin
RegisterComponents
end;
t
(' fpiette',
* ;. '* * " ;. * * * * ;. *
( This
function
{ •..•
indows.
This
is
is
[TPingj);
* * * ;. * * ;.. * * * *
a callback
the very
function.
low level
*
* •.. *
It means that
message
handler
•..;.. •..•..~
* ;.. * ;.. *}
it
is called
by
procedure
setup
to}
71
( handle
the message
sent
by windows
(winsock)
function
X50cketl'IindowProc
(
ahl1nd
HNND;
auMsg
Integer;
awParam
NPARAM;
alParam
LPARAM): Integer;
stdcall:
Obj
MsgRec
to
handle
messages.
TPing;
TMessage:
begin
( At window creation
ask windows
Obj := TPing(GetNindowLong(ahWnd,
to store
0));
a pointer
to
our
object
( If the pointer
is not assigned,
just
call
the default
procedure
if not Assigned(Obj)
then
Result
:= Defl'lindowProc(ahWnd,
auMsg,
awParam,
alParam}
else
begin
( Delphi
use a TMessage
type
to pass
paramter
to his
kind
{ windows
procedure.
So we are
doing
the
same..
MsgRec.Msg
:"" auMsg:
MsgRec. wParam : = awParam;
MsgRec.lParam
: = alParam;
Obj .\·/ndProc (MsgRec);
Result
:= MsgRec.Result:
end;
of)
}
end;
{'"
)
1 This
, and
global
variable
is used to store
needed
to register
the
window
is
XSocketi-lindowClass:
style
IpfnrlndProc
cbClsExtra
cbNndExtra
hlnstance
hlcon
hCursor
hbrBackground
Ips zMenuName
IpszClassName
TVlndClass
=
(
0;
@XSocketWindowProc;
0;
SizeOf (Pointer);
0;
0;
0;
0;
nil;
'ICSPingiiindowClass')
(Allocate
a window handle_
This
{time
we are
called,
and creating
function
XSocketAllocateHi"i'nd(Obj
TempClass
ClassRegistered
the
class
windows
class
characteristic}
used
by TiiSocket
;
means
registering
a window
class
a new window each
time
we are
TObject):
Ht>IND;
the
called
Tt>lndClass;
Boolean;
begin
{ Check if
the
window class
is already
registered
XSocketiolindowClass
_hlnstance
: •••Hlnstance;
Class Regis tered
: = GetClasslnfo
(Hlnstance,
XSocket\iindowClass
lpszClassName,
TempClass)
;
if not ClassRegistered
then
begin
( Not yet
registered,
do it
right
now
Result
: = rlindow5 _RegisterClass
(XSocketWindowClass)
;
first)
_
}
72
if
Result
Exit;
0 then
=
end;
{ Now create
a new
window
:= CreateWindowEx(WS
Result
EX TOOLWINDOW,
XSocketWindowClass
.lps zClassName
, ,
{ l'iindow name }
WS POPUP,
(Window
Style)
0, -0,
(Y
)
0, 0,
0,
0,
Hlnstance,
nil);
{
Height
(hl'lndParent
{ hMenu
(hlnstance
( CreateParam
{ if sUccessfull,
the ask windows to store
{ into
the reserved
byte
(see RegisterClass)
if (Result
<> 0) and Assigned
(Obj) then
Setl'linctowLong
(Result,
0, Integer
(Obj));
the
I
)
}
)
)
object
reference
end;
""
{ Free
.•.•.•
the
procedure
begin
., .• *
window
*;,;.
.• .,
Destroyl-lindow
*
*
*
handle
XSocketDeallocateHWnd
(I1nd)
(Wnd: HNND);
;
end;
{*
.•.•
";'
'"
procedure
begin
* .• ";'
-Ie
.•
TPing.i1ndProc(var
with
MsgRec
if
do
"
*
.• *""
MsgRec:
*""
* .•.•.•.•.•.•
TMessage);
'"
*
.•.•.•
begin
Msg = WM ASYNCGETHOSTBYNAME then
WMAsyncGetHostByName
(MsgRec)
else
:= DeflVindowProc{Handle,
Result
end;
Msg,
wParam,
end;
* * * .•* * * * * * * *., * * * * * * *
procedure
TPing.
Phe
IPAddr
Error
vlt1AsyncGetHostByName
(var
msg:
TMessage);
Phostent;
TlnAddr;
Word;
begin
if
msg.wParam
Exit;
<>
Longlnt(FDnsLookupHandle)
then
FDnsLookupHandle
:= 0;
Error
: = Msg. LParamHi;
if
Error
= 0 then
Phe
IPJI.ddr
FDnsResult
end;
if
(@FDnsLookupBuffer);
:= PlnAddr(PheA.h
addr
list")";
:= StrPas
(inet
ntoa (IPAddr))
-
Assigned
(FOnDnsLookupDone)
FOnDnsLookupDone
(Self,
then
Error);
i
lParam);
"'''
*}
73
end;
..
..
{
,',
constructor
begin
,",
TPing.
Inherited
Create
Create
.. ,'
,
.. , .. "., .. , ... ...
,
)
TCornponent);
(Owner
(Owner);
Flcmp
FIemp.OnDisplay
Flcmp.OnEchoRequest
Flcmp.OnEchoReply
;""
:=
:
:=
TICMP.Create;
IcmpDisplay;
IcmpEchoRequest;
IcmpEchoReply;
=;
{ Delphi
32 bits
has threads
and VeL is
( We need
to do our own way to be thread
Fl'lindowHandle
:= XSocketAllocateHWnd(Self);
not thread
safe.
safe.
end;
;.;.
.•.*
destructor
begin
* * *
*
TPing.
*
*;.
*
* .••*;.;.
*;.
"' *
*
*
*
*;.
Destroy;
CancelDnsLookup;
XSocketDealloca
teHWnd (Fl-lindowHandle)
if Assigned{FIcmp)
then
begin
Flcmp.Oestroy;
Flcmp := nil;
end;
inherited
Destroy;
Cancel
any
pending
dns
lookup
i
end;
*
if
* •.. *;.
*;.;.;.;.;.
procedure
begin
TPing.
IcmpDisplay
* *
*
Assigned
(FOnDisplay)
then
FOnDisplay(Self,
Sender,
*
*;.
(Sender:
*
*
.,.,.,.
* *
*
TObject;
Msg:
String);
')
Msg);
end;
,
{
procedure
begin
if
.
,
TPing.IcmpEchoReply{Sender:
Assigned
(FOnEchoReply)
then
FOnEchoReply(Self,
Sender,
TObject;
Error
*
Integer);
*
* * *}
Error);
end;
* * * * *
procedure
TPing.
begin
if
*
* * * * * * * * * * *
IcmpEchoRequest
(Sender:
Assigned(FOnEchoRequest)
FOnEchoRequest
(Self,
TObject)
;
*
*
*
*
*
*
* * *
*
*}
* *
*
*
*
*
*
*
* * *
*}
*
then
Sender);
end;
{'
.
function
begin
if
* *
TPing.
* *
Ping
Assigned(Flcmp)
Result
:=
Result
:= 0;
* *
* * *
Integer;
then
FIcmp.Ping
else
*
* * *
* *
* * *
*
*
74
end;
*
procedure
begin
#%d'
* '" *
*
TPing.
* * * *
CancelDnsLookup;
* * *
*
*
if
FDnsLookupHandle
Exit;
if
l'lSACancelAsyncRequest
raise
Exception.
CreateFmt
.....................
)
0 then
=
F~;;~~~~;:~~~~::~i::"~~R~'f~~:
(
failed,
error
J
[WSAGetLastErrorJ)
FDnsLookupHandle
:=
;
0;
Assigned{FOnDnsLookupDone)
then
FOnDnsLookupDone
(Self,
"\\TSAEINTR);
if
end;
{*
* *
procedure
* * * * *,. * *
TPing.
IPAddr
*
* * *
(HostName
*
DnsLookup
.............
*
String)
;
)
TlnAddr;
begin
( Cancel
any pending
if FDnsLookupHandle
lookup
0 then
<>
"\-;rSACancelAsyncRequest
FDnsResult
:=
(FDnsLookupHandle);
";
IPAddr.S
addr
:= Inet
addr(@HostName[l]);
if IPAddr.S
addr
<> u-long(INADDR
NONE}
FDnsRes;:;-lt
:= Strpas(inet_ntoa(IPAddr)};
if Assigned(FOnDnsLookupDone)
then
FOnDnsLookupDone
(Self,
0);
Exit;
end;
FDnsLookupHandle
if
: = !'lSAAsyncGetHostByName
'%s:
ean"
[HostName,
t
(
.
if
TPing.
SetAddress
JI.ssigned(FIemp)
Flcmp.Address
(FWindowHandle,
start
DNS lookup,
l'lSAGetLastErrorJ);
{
procedure
begin
begin
l'lM ASYNCGETHOSTBYNAME,
@HostName[lJ,
@FDnsLookupBuffer,
SizeOf (FDnsLookupBuffer));
FDnsLookupHandle
= 0 then
raise
Exception.CreateFmt
end;
then
(Value
Str ing)
;
error
#%d',
.
)
then
:= Value;
end;
{* * *.;,.;,.;,.;,
function
TPing.
begin
if
ASSigned
*.;, * *
GetAddress
*
(FIemp)
then
* * * *
String;
*
* .•. * * *
* * * * .• *
*
* *,.
*
* *
*
*}
75
:= Flcmp.Address
Result
else
Result
end;
{*
*
* .•. * * * * *
'"
procedure
begin
if
TPing.
* * * *
*
SetSize
(Value
Integer)
;
Assigned
(Flcmp)
then
Flcmp.Size
:= Value;
end;
(*
* *
fUnction
begin
*
* * * * * *
TPing. GetSize
*
* * * * * .•. *
*
* * * * * *
* * *
*
Integer;
*
* * * * .•. *
if
Assigned(Flcmp)
then
Resul t := Flcmp. Size
else
:= 0;
Result
end;
(*
* *
procedure
begin
*
* * * *
* * *"*
SetTimeout
TPing.
Assigned
(FIcrnp)
Flcmp.Timeout
if
* *
* *
(Value
* *
Integer)
*
*
*;,
.•. '"
* * * *
*)
;
then
;= Value;
end;
.
{'
* * * * * * *
* * .•..•. *
function
begin
if
TPing.
GetTimeout
* * *
Integer;
*
....
.. ,.,.,
,"',
'(
(Flcrnp) then
:= Flcmp.Timeout
Assigned
Result
else
:= 0;
Result
end;
{*
.•.
*
*
procedure
begin
if
* * * '"
Set TTL (Value
* * * * *
*
TPing.
,."."
Integer);
'{
end;
(*
•. *"*
function
begin
if
* * * * * *
TPing.GetTTL
Assigned
Result
*
Integer;
..................
'{
(FIcmp) then
:= Flcmp.TTL
else
:= 0;
Result
end;
{*
*
*
* * *
*
*
*
*
*
*
*
*
* * * * * *
*
*
* *
*
*
* *
*
*
*
* * *
*}
*)
76
procedure
begin
TPing.
if
Set Flags
Assigned(FIcmp)
Flcmp.Flags
(Value
Integer)
;
then
:= Value;
end;
I' • ""
*"
function
begin
TPing. Get Flags
if
*""""
*""
""
,*;'"
Integer;
* *"*
'*
'*"""
Oo"""
'*""*
*}
Assigned{Flcmp)
then
Result
:= Flcmp.flags
else
Result
:= 0;
end;
{*""*
'*
function
begin
if
*,,"
'*
TPing.
GetReply
* * *"
'*
*""
* * *"*"""
TlcmpEchoReply;
*"
*"
*
'*""*
* '*
'*
*}
Assigned(FIcmp)
then
Result
:= Flcmp.Reply
else
FillChar(Result,
SizeOf{Result)
,
0);
end;
I'
•
""""
function
begin
,*"""
* *"
*
TPing. GetErrorCode
if
Assigned
Result
Integer;
.,.. ,
,.,.
'}
(FIcrnp)
then
Flcmp.ErrorCode
:=
else
:= -1;
Result
end;
1···'·····,·
....
function
begin
if
TPing. GetErrorString
Assigned
Resul t
String;
. .. " ..... , ...
'}
(FIemp)
then
: = Flcmp. ErrorString
else
Result
:=
end;
1·········,··
function
begin
if
'rPing.
Assigned
Result
GetHostName
..
* * * * * *
String;
*
*
*
*
*
*
*"
*
*
(FIcmp)
then
:= Flcmp.HostName
else
Result
:=
end;
1'··········.
function
begin
if
TPing.
GetHostIP
Assigned(Flcmp)
String;
then
,
, .. ,
"")
*)
77
Result
:=
Flcmp.HostIP
else
Resul t
end;
1* * * *
{procedure
begin
if
*
•. * *
*;.- * * *
SetOnDisplay
TPing.
Assigned
(FIemp)
Flcmp.OnDisplay
* * * * *
(Value
TICMPDisplay)
;
then
:= Value;
end;
)
{*
*
;.- *;.-;.-..,
(function
begin
if
* * *
*
TPing.
*
*;.-
* * * * *
GetOnDisplay
Assigned
Resul t
* * *
*
* *
*;.-
TICMPDisplay;
(Flcmp)
then
: = Flcmp. OnDisplay
else
Result
nil;
;=
end;
)
{' ,
* *
{procedure
begin
if
* * * * *
* * * *.,;.SetOnEchoRequest
TPing.
Assigned(FIcmp)
then
Flcmp.OnEchoRequest
* * * *
*
(Value
TNotifyEvent)
: = Value;
end;
)
(function
begin
if
TPing.
GetOnEchoRequest
Assigned
t
Resul
(FIcmp)
TNotlfyEvent;
then
:=
Flcmp.
:=
nil;
OnEchoRequest
else
Result
end;
)
,
{'
* *
{procedure
begin
if
TPing.
*
*
SetOnEchoReply
*;.- *
(Value
* *
* * * * *
TICMPReply)
Assigned(Flcmp)
then
Flcmp.OnEchoReply
: = Value:
end;
)
{*
*
(function
begin
if
* * *
*
'rPing.
Assigned
Result
* * * * * *
GetOnEchoReply
TICMPReply;
(FIcmp)
then
:= Flcmp.OnEchoReply
else
Result
end:
)
{'
end.
.
:-
nil:
* * *
* * * * * * *
ANEXO 2 - BIBLIOTECA
ICMP
*
:
;
'" *;.-
* *
*;.-
*
*}
78
Auchor:
Description:
Fran~ois
This
unit
PIETTE
encapsulate
the
ICMP.DLL into
an
object
of
type
TICHP.
Using
this
object,
you
I'lorks
rICMP
only in 32 bits
is perfect
for
can
easily
ping
any
host
on
your
network.
program,
GUI
you
mode (no
a console
could
use
Delphi
1) under
NT or 95.
mode program,
but
if you build
the
TPing
object.
Then
object
wich
is
a true
veL
encapsulating
the
rICHP
you
can
use
object
inspector
to
change
properties
or
event
handler.
This
is
much
simpler
to
EMail:
francois.
francais.
use for
a GUI program.
http://users
. swing. bel francais.
[email protected]
http;//www.rtfm.be/fpiette
piet [email protected]
francais.
[email protected]
January
6, 1997
1. 04
Creation:
Version:
Support:
details.
Legal
issues:
Use
the
mailing
list
piet
te
be
[email protected]
See
website
Copyright
(C) 1997-2000
by Fran<;:ois
PIETTE
Rue de Grady 24, 4053 Embourg,
Belgium.
Fax:
< francois
. piet te@pophost
. eunet. be>
This
software
is
implied
warranty.
for any
damages
provided
In no
arising
+32-4-36574.56
r as-is
r,
without
any express
event
will
the author
be held
from the use of this
software.
Permission
is granted
to anyone
to use this
purpose,
including
corrunercial
applications,
and redistribute
it
freely,
subject
to the
restrictions:
1.
The origin
of this
software
you must not claim
that
you
If you use this
software
in
in the product
documentation
not required.
2.
Altered
source
for
versions
or
liable
software
for
and to alter
following
any
it
must not be misrepresented,
wrote
the original
software.
a product,
an acknowledgment
would be appreciated
but is
must
be
plainly
marked
as
such,
and
must
not
be
3.
This
notice
distribution.
4.
You must
misrepresented
may not
register
be
this
as
being
removed
software
or
the
original
altered
from
by
sending
software.
any
source
a picture
postcard
to
the
author.
Use
a nice
stamp
and
mention
your
name,
street
address,
Updates:
EMail
address
and
any
corrunent
you
like
to
say.
79
Dec
13,
1997
VI.01
1998
199B
corresponding
OnDisplay
event.
This
require
to modify
programs.
VI.02
Deplaced
address
resolution
just
before
use
VI. 93 Changed
TIPAddr
and others
to LangInt
to avoid
Added
OnEchoRequest
and
OnEchoReply
events
and
removed
the
l-:1ar 15,
Sep 24,
Jan
unit
24,
1999
problems
with
Delphi
VI.lI
Surfaced
Flags
(Flags
= IP_FLAG_DF
<1
property
to enable
to allow
fragmentation
fragmentation
check)
existing
range
check
Iemp;
interface
1 SIFDEF
VERBO)
This source
file
/ / l'i'in 32 features.
($ENDIF)
1/
t1indows,
SysUtils,
const
IcmpVersion
IcmpDLL
=
=
102;
'icmp.
is
"'NOT* compatible
Classes,
dll'
1 because
j
to
transports
and
'" 0;
11000;
(IP_STATUS
BASE
(IP
STATUS-BASE
(IP-STATUS-BASE
(IP-STATUS-SASE
(IP-STATUS-BASE
=
(IP-STATUS-BASE
(IP-STATUS-BASE
=
(IP-STATUS-SASE
(IP-STATUS-BASE
(IP-STATUS-SASE
(IP-STATOS-SASE
(H'-STATUS-SASE
(IP-STATUS-SASE
(IP-STATUS-BASE
IP=:BAD=ROUTE
IP TTL EXPIRED
TRANSIT
IP- TTL-EXPIRED
-REASSEM
IP=:PARAM_PROBLEM
I P SOURCE QUENCH
IP-OPTION-TOO
BIG
(IP:)TATUS=:SASE
(IP
STATUS
BASE
(IP-STATUS-SASE
(IP::::'STATUS=:SASE
IP=:BAD _DESTINATION
/ status
codes
passed
P_ AD DR_DELETED
P SPEC MTU CHANGE
P=:MTU_CHANGE
Delphi
NinSockj
returned
/ / IP status
codes
IP_SUCCESS
IP STATUS
BASE
r()UF_TOO_SMALL
I P DEST NET UNREACHABLE
IP=:OEST=:HOST
UNREACHABLE
IP _ DEST _ PROT_UNREACHABLE
I P DEST PORT UNREACHABLE
IP=:NO_RESOURCES
IP BAD OPTION
I(~HVI_ERROR
I P PACKET
TOO BIG
IP-REQ
TIMED QUT
IP-BAD-REQ
-
/
I
I
I
with
up
on
status
indications.
(IP
STATUS
BASE
(IP-STATUS-SASE
user
+
IOCTLs.
1);
+ 2);
3);
+ 4);
+ 5);
+ 6);
+ 7);
+ 8);
+ 9);
+ 10);
+ 11);
+ 12);
+ 13);
+ 14);
+
+
15);
16) ;
+ 17) ;
+ 18) ;
+
+
19);
+ 20);
(IP=:STATUS=:SASE
+ 21);
(IP_STATUS
+
IP _GENERAL_FAILURE
MAX_I P_STATUS
BASE
255)
i
it
uses
80
1/ I P header
IP_FLAG_OF
flags
/I
Don't
-
/I
=
/ /
=
/1
End of list
option
No operation
Security
option.
Loose
source
route.
Strict
source
route.
Record
route.
Timestamp.
Stream
1D (obsolete)
-
S02;
fragment
this
packet.
1/
I P Option
Types
IP_OPT_EOL
IP_OPT_NOP
IP _OPT_SECURITY
IP_OPT_LSRR
IP_OPT_SSRR
IP_OPT_RR
IP_OPT_TS
IP_OPT_SID
MAX_OPT_SIZE
$00;
SOl;
$82;
'" S83;
= $89;
= $07;
PIcmpEchoReply
TIcmpEchoReply
Address:
Status:
RTT:
milliseconds
DataSize:
Reserved:
Data:
Options:
end;
/I
1/
1/
"" $44;
= $88;
•• $40;
type
/ / IP types
TIPAddr
:=
100910t;
TIPNask
- Loog10t;
TIPStatus
:=
Long1nt;
PIPOptionlnformation
TIPOptionlnformation
TTL:
TOS:
Flags:
OptionsSize:
OptionsData:
end:
/ /
//
II
II
II
=
=
Byte;
Byte;
Byte:
Byte;
PChar:
An IP
An IP
Status
address.
subnet
mask.
code returned
from
IP
APIs.
"TIPOptionlnformatioo;
packed
record
1/ Time To Live (used for traceroute)
1/ Type Of Service
(usually
0)
II IP header
flags
(usually
0)
II Size of options
data
(usually
0,
II Options
data
buffer
"TIcmpEchoReply:
= packed
record
TIPAddr;
Dl'lord:
Dt1ord;
max
=
t1ord;
Nord:
Pointer;
TIPOptionInformation;
II
II
II
Replying
address
IP status
value
Round Trip
Time
II
II
II
II
Reply
data
size
Reserved
Pointer
to reply
Reply
options
in
data
buffer
II
II
II
II
II
II
IcmpCreateFile:
Opens a handle
on which
ICMP Echo Requests
can be issued.
Arguments:
None.
Ret.urn
Value:
An open file
handle
or INVALID_HANDLE_VALUE. Extended
error
information
II
is available
by calling
GetLastError
() .
TlcmpCreateFile
= function:
THandle:
stdcall:
II
II
II
II
II
II
40)
IcmpCloseHandle:
Closes
a handle
opened
by ICMPOpenFile.
Arguments:
IcmpHandle
- The handle
to close.
Return
Value:
TRUE if
the handle
was closed
successfully, otherwise
Extended
II
error
information
is available
by calling
GetLastError
TlcmpCloseHandle
= function
(IcmpHandle:
THandle):
Boolean;
FALSE.
() .
stdcall;
81
/ /
IcmpSendEcho:
Sends
an leMP Echo request
and returns
one or more replies.
The
call
returns
when the timeout
has expired
or the
reply
buffer
is
filled.
/ / Arguments:
/ /
IcmpHandle
- An open handle
returned
by ICMPCreateFile.
/ /
DestinationAddress
- The destination
of the echo request.
1/
RequestData
- A buffer
containing
the data
to send
in the
/ /
request.
//
RequestSize
- The number of bytes
in the
request
data
buffer.
- Pointer
to the
IP header
options
for
the
//
RequestOptions
request.
May be NULL.
II
- A buffer
to hold
any replies
to the request.
/I
ReplyBuffer
On return,
the buffer
will
contain
an array
II
of
ICMP_ECHO_REPLY structures
followed
by
II
options
and data.
The buffer
should
be large
enough
II
to
hold
at least
one ICMP_ECHO_REPLY structure
II
and 8 bytes
of data
- this
is the
size
of
II
an ICMP error
message.
I I
ReplySize
- The size
in bytes
of the
reply
buffer.
II
Timeout
- The time
in milliseconds
to wait
for
replies.
II
Value:
I I Return
Returns
the number of replies
received
and stored
in ReplyBuffer.
II
If
II
the return
value
is zero,
extended
error
information
is available
II
via GetLastError
() .
TIcmpSendEcho
'" function
(IcmpHandle:
THandle;
OestinationAddress:
TIPAddr;
Pointer;
RequestOata:
Word;
RequestSize;
PI POpt ion I nforma t ion;
RequestOptions:
ReplyBuffer:
Pointer;
m1ord;
ReplySize:
OWord
Timeout:
): OWord; stdcall;
II
/I
1/
II Event handler
type
declaration
TICMPDisplay
= procedure
(Sender:
TICMPReply
'" procedure
(Sender:
for TICMP.OnDisplay
event.
TObject;
Msg
String)
of object;
TObject;
Error
Integer}
of object;
II The object
wich encapsulate
the
TICMP = class
(TObject)
private
HModule;
hICMPdll
TIcmpCreateFile;
IcmpCreateFile
TlcmpCloseHandle;
IcmpCloseHandle
TlcmpSendEcho;
IcmpSendEcho
THandle;
hICMP
Calls
TlcmpEchoReply;
FReply
String;
FAddress
FHostName
String;
(output)
String;
FHostIP
(Output)
ICMP.OLL
II
Handle
for
ICMP. DLL
for
the
II
Handle
II
II
II
ICMP Echo reply
buffer
Address
given
Dotted
IP of host
II
Name of
host
ICMP
82
FIPAddress
contact
FSize
to 56)
FTimeOut
4000mS)
FTTL
send)
FFlags
FOnDisplay
display
TIPAddr;
Integer;
Integer;
Integer
i
Integer;
TICMPDisplaYi
FOnEchoRequest
FOnEchoReply
FLastError
packet
FAddrResol
procedure
public
TNoti fyEvent;
TICMPReply;
DWORDi
ved
Resol
constructor
destructor
function
procedure
function
property
SetAddress;
property
property
FTimeout;
property
property
Property
property
property
property
property
property
FOnDisplay;
II
Address
of
II
Packet
II
Timeout
II
Time
/I
II
Options
flags
Event
handler
to
II
After
IeMP
size
(default:
(default
To Live
sending
to
(for
String);
String;
Address
String
read
FAddress
write
Size
Timeout
Integer
Integer
read
read
FSize
FTimeout
write
write
Reply
TTL
Flags
ErrorCode
TlcmpEchoReply
Integer
Integer
DNORD
String
String
String
TICMPDisplay
ErrorString
HostName
HostIP
OnDisplay
property
OnEchoRequest
TNotifyEvent
property
OnEchoReply
TICMPReply
end;
=
to
Boolean;
veAddr;
Create;
virtual;
Destroy;
override;
Ping
Integer;
SetAddress
(Value
GetErrorString
TICMPException
host
class
read
read
read
read
read
read
read
read
FReply;
FTTL
write
FFlags
write
FLastError;
GetErrorString;
FHostName;
FHostIP;
FOnDisplay
write
read
write
read
write
FOnEchoRequest
FOnEchoRequest;
FOnEchoReply
FOnEchoReply;
FSize;
FTTL;
FFlags;
(Exception);
implementation
{
constructor
)
TICMP, Create;
\'lSAData:
TltlSAData;
hICMP
FSize
FTTL
FTimeOut
:=
:=
:=
:=
begin
/ / ini tiaUse
if
INVALID HANDLE VALUE;
56;
64;
4000;
winsock
\\fSAStartup($lOl,
raise
WSAData)
TICMPException,
<>
Create
0 then
( r Error
initialising
Ninsock
r) ;
83
II register
the icmp.dll
stuff
hICMPdll
:= LoadLibrary(icmpDLLj;
if hICMPdll
= 0 then
raise
TICMPException.Create
@ICMPCreateFile
@IcrnpCloseHandle
@IcmpSendEcho
if
(@ICMPCreateFile
(@IcmpCloseHandle
(@!cmpSendEcho
=
raise
hICMP
hICMP
if
*
* *
destructor
begin
to
register
(hICMPdll,
(hICMPdll,
(hICMPdll,
+
r
icmpDLL);
IcmpCreateFile')
'IcmpCloseHandle');
'IcmpSendEcho');
;
I
= Nil)
or
'" Nil)
or
Nil)
then
TICMPException.
Create
( 'Error
loading
dll
functions');
IcmpCreateFile;
INVALID_HANDLE_VALUE
=
raise
end;
(*
:=
(' Unable
: = GetProcAddress
:= GetProcAddress
: = GetProcAddress
TICMPException.
* * * * * * *
TICMP. Destroy;
then
Create
* * * *
(' Unable
*
to
*
get
* *
ping
*
'*
handle
*
'* '*
*
'*
r) ;
'*
*
'* '* '* '* '*}
hICMP <> INVALID_HANDLE_VALUE then
IcmpCloseHandle
(hICMP);
hICMPdll
<> 0 then
FreeLibrary
(hICMPdll)
;
WSACleanup;
inherited
Destroy;
if
if
end;
.
("
function
begin
if
Minlnteger(X,
Y:
Integer):
.."
Integer;
,"
')
X >'" Y then
Result
:'" Y
else
Result
:'" X;
end;
("
..
.,',
procedure
Phe
,",
..
'*
TICMP. Resol veAddr;
PHostEnt
i
II
begin
* *
'* '*
HostEntry
* *
buffer
'*
*
'* '*
for
*
..
'*
name
lookup
II
Convert
host
address
to IP address
FIPAddress
:= inet
addr (PChar (FAddress)
);
if
FIPAddress
<> LongInt
(INADDR NONE) then
else
II Was a numeric
dotted
FHostName
: = FAddress
begin
address
let
it
II Not a numeric
dotted
address,
try
to
Phe := GetHostByName
(PChar (FAddress)
);
if
Phe = nil
then
begin
FLastError
Assigned
if
Exit;
in
this
format
resolve
by
name
: = GetLastError;
(FOnDisplay)
then
FOnDisplay(Self,
'Unable
to
resolve'
+
FAddress);
')
84
end;
FIPAddress
FHostName
::=
:=
longint
(plongint
Phe".h_name;
(Phe"
h_addr_list")
") ;
end;
StrPas
:"" TRUE;
FHostIP
FAddrResolved
:=
(inet_ntoa
(TInAddr
(FIPAddress)
) );
end;
..........
~
('
procedure
TICMP. SetAddress
(Value
begin
/ / Only change
if
needed
(could
if
FAddress
:; Value
then
Exit;
FAddress
:= Value;
FAddrResolved
:= FALSE;
/ /
Resol veAddr;
end;
take
a
long
time)
........
.
('
function
TICMP.GetErrorString
begin
case
FLastError
of
IP_SUCCESS:
IP _BUF _TOO_SMALL:
I P_ DEST_NET_UNREACHABLE;
IP DEST HOST UNREACHABLE:
IP - DEST-PROT-UNREACHABLE:
IP=DEST=PORT=UNREACHABLE:
IP_NO_RESOURCES:
IP_BAD_OPTION:
IP Ht1 ERROR:
IP=PACKET_ TOO_BIG:
IP REQ TIMED OUT:
IP-SAD-REQ:
I()AD::)OUTE:
IP _TTL_EX PI RED_TRANSIT:
I P_TTL_EXPIRED _ REASSEM:
I P PARAM PROBLEM:
I P-SOURCE QUENCH:
IP=OPTION =TOO_BIG:
IP _BAD_DESTINATION:
I P_ ADDR_DELETED:
I P_SPEC _ MTU_CHANGE:
I P MTU CHANGE:
IP =GENERAL_FAILURE:
)
String);
'
)
String;
Result
Resul t
Result
Result
Result
Result
Result
Result
Resul t
Result
Result
Result
Resul t
Result
Result
Result
Result
Result
Result
Result
Result
Result
Result
Result
:-=
:-
'No error';
'Buf fer
too
'Destination
'Destination
'Destination
small';
network
unreachable';
host
unreachable';
protocol
unreachable';
'Destination
port
unreachable';
'No resources';
'Bad
option';
: '" 'Hardware
error';
'Packet
too
big';
'Request
timed
out';
'Bad
request';
'Bad
route';
'TTL expired
in transit';
:= 'TTL expired
in reassembly';
'Parameter
problem';
'Source
quench';
:= 'Option
too
big';
:= 'Bad
Destination';
'Address
deleted';
'Spec
MTU change';
'MTU change';
:= 'General
failure';
'Pending'
;
else
Result
:=
'ICMP
error
I'
+
IntToStr(FLastError);
end;
end;
,
('
function
""""
TICMP. Ping
Integer;
var
BufferSize:
Integer;
* * * * * * .•..•..•.* .•.* '" * .•..•.* "')
85
pReqData,
pData:
Pointer;
pIPE:
IPOpt:
Msg:
begin
/ I IeMP Echo
/ / IF Options
PlcmpEchoReply;
TIPOptionlnformation;
String;
Result
FLastError
reply
for
buffer
packet
:= 0;
:= 0;
if
not FAddrResolved
Resal veAddr;
if
FIPAddress
'" LangInt
{INADDR NONE} then
FLastError
:= IF_BAD_DESTINATION;
if Assigned
(FOnDisplay)
then
FOnDisplay
then
(Self,
'Invalid
host
begin
address
I ) ;
Exit;
end;
/1 Allocate
space
for data buffer
BufferSize
:= SizeOf(TICMPEchoReply)
GetMern (pReqData,
FSize);
GetMem(pData,
FSize);
GetMem(pIPE,
BufferSize);
space
+ FSize;
try
II Fill
data
buffer
FillChar(pReqData
A
,
with
some data
FSize,
$20);
bytes
Msg ;= 'Pinging
from Delphi
code written
Move(Msg[l],
pReqDataA,
Minlnteger(FSize,
pIPEA.Data
:=
pData;
FillChar(pIPE",
if
SizeOf(pIPEA),
Assigned(FOnEchoRequest)
FOnEchoRequest
(Self);
FillChar(IPOpt,
IPOpt. TTL
IPOpt. Flags
0);
then
SizeOf(IPOpt),
: = FTTL;
0);
Result
FLastError
FReply
if
FIPAddress,
:= GetLastError;
: = pIPE";
Assigned(FOnEchoReply)
FOnEchoReply(Self,
@IPOpt,
pIPE,
then
Result);
finally
/ / Free
those
buffers
FreeMem(pIPE)
;
FreeMem(pData)
;
FreeMem (pReqData)
;
end;
end;
end.
APENOICE
by F. Piette';
Length(Msg)));
1 • COOIGO
FONTE·
Form_Banco
pReqData,
BufferSize,
FSize,
FTimeOut);
to
send
86
unit
Form_Banco;
interface
SysUtils,
DBClient,
Classes,
IBDatabase,
type
DB,
Provider,
IBCustornDataSet,
OSXpress,
lBTable,
IBQuery,
SqlExpr,
FMTBcd,
Dialogs;
TBaneo = class
(TDataModule)
Conectar:
TSQLConnection;
DSGrupo:
TDataSource;
tb_grupo:
TIBTable;
Banco:
TIBDatabase;
Transaction:
TIBTransaction;
DSAtivosRede:
TDataSource;
tb AtivoRede:
TIBTable;
tb=Historico:
TIBTable;
DSHis tcrico:
TDataSource;
DSQuery:
TDataSource;
TIBQuery;
TIBQuery;
tb_grupopostError
EDatabaseError;
var
private
Action:
( Private
public
{ Public
end;
var
(DataSet:
TDataSet;
TDataAction);
declarations
)
declarations
Banco; TBaneo;
implementation
{$R * .dfm}
II
dados
rotina
para
procedure
EDatabaseError;
var
Action:
erroMens
begin
ErroMens
primaria
tratamento
TBanco
de
tb
erros
ErroMens
if
ErroMens
begin
faz
insercao
TDataSet;
de
E:
TDataAction);
E.Message;
'Key
violation.
then
invalida
end;
<>
"then
ShowMessage (' Erro
action
:= daAbort;
end;
end;
quando
(DataSet
string;
:'"
if
end.
amigaveis
grupoPostError
de
inser~ao
!');
II
testa
!');
se
se
ja existe
a
chave
87
APENOICE
2 - COOIGO
FONTE - Form_CadastroComputadores
unit
Form CadastroComputadores:
interface
11indows,
Controls,
Forms,
Dialogs,
Messages,
StdCtrls,
SysUtils,
DBCtrls,
Variants,
Mask,
DB,
Classes,
ExtCtrls,
Graphics,
DBTables,
Grids,
DBGricts,
ComCtrls,
Buttons,
Form_Banco;
type
TFarmCadastroComputadores
•• class
(TForm)
Bevell:
TBevel;
StatusBarl:
TStatusBar;
GroupBoxl:
TGroupBox;
DBNavigatorl:
TDBNavigator;
Labell:
TLabel;
DBEditl:
TDBEdit;
Labe12:
TLabel;
DBEdit4:
TDBEdit:
Labe14:
TLabel;
Label3:
TLabel;
DBEdit3:
TDBEdit;
DBMeroo!: TDBMemo;
LabelS:
TLabel;
GroupBox2:
TGroupBox;
DBGridl:
TD8Grid;
DBEdi t2:
TDBEdi t;
ComboBoxl:
TComboBox;
Editl:
TEdit;
Button!: TButton;
procedure
ComboBoxlChange(Sender:
TObject);
procedure
FormActivate
(Sender:
TObject):
procedure
FormClose
(Sender:
TObject;
var Action:
TCloseAction);
procedure
DBGridlCellClick
(Column:
TColumn):
procedure
OBGridlDrawColumnCell
(Sender:
TObject:
const
Rect:
TReet:
OataCol:
Integer;
Column:
TColumn;
State:
TGridDrawState);
procedure
ButtonIClick(Sender:
TObject);
private
{ Private
declarations}
public
( Public
declarations
)
end:
var
FormCadastroComputadores:
TFormCadastroComputadores;
implementation
{$R .•..dfm}
TObject)
procedure
TFormCadastroComputadores.
:
begin
/ / Traz
todos
os grupos
e mostra
a descricao
Banco.tb
AtivoRede.Edit;
Banco. Query. Close;
Banco.Query.
DataSource
:=
Banco. DSGrupo:
cod_grupo·'
Banco. Query.
Banco.Query.
Banco .Query.
+ComboBoxl.
Open:
SQL.Clear;
SQL.Add ( 'SELECT
Text+'
') :
FROM
ComboBoxlChange
do
//
(Sender:
grupo
escolhe
a
tabela
imERE
88
Banco. Query. Open;
Editl.'l'ext
;= Banco.Query.Fields[lJ
DBEdit2.
Field.
Text
:= ComboBoxl.
.AsScring;
Text;
end;
procedure
TFormCadastroComputadores.
begin
1/ quanta
ativa
0
formulario
traz
componente
combobox
ComboBoxl . I terns. Clear;
Banco. tb grupo. First;
while
not Banco.tb_Grupo.Eof
do
begin
ComboBoxl
Items .Add (Banco. tb Grupo
Banco. tb Grupo. Next;
-
FormActivate
todas
FieldByName
as
(Sender:
grupos
( I Cod _grupo
TObj eet)
;
cadastrados
') . AsString)
no
;
end;
end;
procedure
TFormCadastroComputadores
FormClose
(Sender:
TObject;
var Action:
TCloseAction);
begin
DBEdit1.SetFocus;
II
forca
0 focus
no campo cfoedit!
Banco.tb_grupo,Cancel;
/1 cancela
as
opecacoes
pendentes
houver
TColumn)
do
end;
procedure
;
begin
/ / quando
TFormCadas
clicar
no
dbgrid
troComputadores
traz
no
DBGridlCellClick
componente
combobox
(Column:
a
conteudo
grupo
comboboxl
end;
procedure
Text
:"" dbgrid1.Columns.Grid.Fields(1)
TFormCadastroComputadores.
.AsString;
DBGridlDrawColumnCell
(Sender:
TObject;
canst
Rect:
TRect;
DataCal:
State:
TGridDrawState);
begin
/ / quando
clicar no dbgrid
do
Integer;
traz
Column:
no
componente
TColumn;
combobox
a
canteudo
grupo
comboboxl.Text
:=: dbgridl.Columns.Grid.
Fields
[1] .AsString;
end;
procedure
TFormCadastroComputadores.
Button1Click
(Sender;
TObject);
begin
/ I pergunta
se deseja
realmente
excluir
a item
selecionado
if
messagedlg
( 'Confirma
a Exclusao
?', mtwarning,
[mbcancel,
mbOK), 0)
HrOK then
begin
/ I caso a escalha
seja
OK, sera
excluido
0 ativo
de rede
banco. Query. Close;
banco.Query.DataSource
;= banco.OSAtivosRede;
banco.Query.Open;
banco.Query.
SQL.Clear;
banco .Query.
SQL .Add (' DELETE
FROM
tb_computadores
where
cod computador
=
'+ dbeditl.Text);
banco.Query.Open;
banco. tb _ Ati voRede. Refresh;
end;
end;
end.
89
APENOICE
t
uni
3 • COOIGO
FONTE·
Form_CadGrupos
Form_ CadGrupos;
interface
l'lindows,
Messages,
Forms,
Dialogs,
StdCtrls,
Form Banco,
ComCtrls,
Buttons;
Controls,
ExtCtrls,
SysUtils,
Mask,
Variants,
DBCtrls,
DB,
Classes,
DBTables,
type
TFormCadGrupos
= class
(TFormj
StatusBarl:
TStatusBar;
GroupBoxl:
TGroupBax;
GroupBox2:
TGroupBox
i
DBNavigatorl:
TDBNavigator;
DBEditl:
TDBEdit;
DBEdi t2:
TDBEdi t;
DBEdit3:
TDBEdit;
Labell:
TLabel;
Labe12:
TLahel;
Label3:
TLabel;
DBGridl:
TDBGrid;
Button!:
TButton;
procedure
FormClose (Sender:
TObject;
var
procedure
DBNavigatorlClick
(Sender:
TNavigateBtnj;
procedure
Button!Click(Sender:
TObject);
private
{ Private
declarations}
public
{ Public
declarations
end;
Graphics,
Grids,
DBGrids,
Action:
TCloseAction);
TObject;
Button:
var
FormCadGrupos:
TFormCadGrupos;
implementation
uses
(SR
no
PingTstl;
~.dfm)
procedure
TFormCadGrupos.
FormClose
(Sender:
TObject;
var Action:
TCloseAction);
begin
/ / quando
fechar
0 formulario
grupos
coloca
as
combobox
PingTstForm.
ComboBoxl.
Items. Clear;
Banco.tb
grupo.First;
while
not
Banco.tb_Grupo.Eof
do
begin
PingTstForm.
tring)
i
ComboBoxl.
Items
.Add (Banco.
tb
Grupo.
--
Banco.
tb _ Grupo.
Next
i
FieldByName
grupos
('Cod
cadastrados
grupo
r)
.AsS
90
end;
end:
procedure
Button:
begin
TFormCadGrupos
TNavigateBtn);
DBNavigatorlClick
(Sender:
TObj ect;
dbedi tl . SetFocus;
end;
where
procedure
var
TFormCadGrupos
Sucesso
begin
integer;
/ I soma quantos
ativQs
Sucesso
;= 0;
banco. Query. Close;
de
banco,
banco.
banco,
: = banco.
Query.
Query.
Query.
banco.Query.
cod grupo
=
ba~co. Query.
Sucesso
if
DataSource
Open;
SQL. Clear;
,
: = banco.
Sucesso
>
Query.
existem
II
messagedlg
mbOK] , 0)
[mbcancel,
begin
II caso
a escolha
banco. Query. Close;
Query.
Query.
Query.
(0
casa
'Existem
banco.
banco.
banco.
dbeditl
Fields
1/
0 then
end
if
?' , mtwarning,
rede
nao
existe
se
OK,
excluira
Query.
SQL.Add (' DELETE
Query.
Open;
banco.
end;
tb
grupo.
SetFocus;
Refresh;
ati
redes
: = banco.
banco.
-
FROM tb_computadores
vas
de
rede
cadastrados
ativQs
de
rede
no
grupo
!!!');
neste
('Confirma
MrOK then
banco.
Text);
end;
dbeditl
end;
end.
AS Sucesso
J • As Integer;
exista
de
Da taSource
Open;
SQL. Clear;
grupo
DSAtivosRede;
Ativos
=
TObject);
neste
SQL.Add ( 'SELECT CDUNT(*)
+ dbedi t1. Text) ;
Open;
else begin
'+
ButtonlClick(Sender:
grupo
Exclusao
0
grupo
DSAti vosRede;
FROM tb _grupos
where
cod_grupo
91
APENDICE
unit
4 • CODIGO FONTE· Form_GeraRelatorio
Form_GeraRelatorio;
interface
uses
l'lindows,
Forms,
Dialogs,
Messages,
DB,
SysUtils,
DBTables,
Variants,
QRCtrls,
QUickRpt,
type
TFormGeraRelatorio
= class
QuickRepl;
TQuickRep;
QRBandl:
TQRBand;
(TForm)
QRSubDetaill;
TQRSubDetail;
QRLabell:
TQRLabel;
QRLabe12;
TQRLabel;
QRLabe13:
TQRLabel;
QRLabe14:
TQRLabel;
QRDBTextl:
TQRDBText;
QRDBText2:
TQRDBText;
QRDBText3:
TQRDBText;
QRDBText4:
TQRDBText;
QRLabe15:
TQRLabel;
QRPerdas:
TQRLabel;
QRLabe17:
TQRLabel;
QRTotal:
TQRLabel;
QRLabe19:
TQRLabel;
QRSucesso;
TQRLabel;
QRTotalP:
TQRLabel;
QRSucessoP: TQRLabel;
QRPerdasF:
TQRLabel;
QRNome: TQRLabel;
private
{ Private
public
{ Public
end;
declarations}
declarations
FormGeraRelatorio:
implementation
{$R
end.
*.dfm}
TFormGeraRela
torio;
Classes,
ExtCtrls,
Graphics,
Controls,
Form_Banco;
92
APENOICE
unit
5 • COOIGO
FONTE·
Form_RelatorioAtivo
Form_RelatorioAtivo;
interface
\'lindows,
Forms,
Dialogs,
Messages,
SysUtils,
StdCtrls,
Grids,
Classes,
Variants.
type
TFormRelatorioAtiva
= class
(TForm)
GroupBoxl:
TGroupBox;
Btnlmprimir:
TButton;
Edit!:
TEdit;
procedure
BtnlmprimirClick(Sender:
private
{ Private
declarations}
public
{ Public
declarations
end;
var
FormRela torioAti
va:
Graphics,
Controls,
DBGrids;
TObject);
TFormRelatorioAti
va;
implementation
uses
Form_GeraRelatorio,
{SR'
.dfm}
procedure
Sucesso,
begin
if
Form_Banco:
TFormRelatorioAtivo.
Total,
PorcentualP,
editl.Text
=
begin
showmessage
('
editl.
SetFocus;
end
"
E
then
necessario
BtnlmprimirClick
(Sender:
Perdas,
PorcentualS
/1
enaa
casa
informar
escolha
a
TObject);
Real;
nada
IP! ' ) ;
else
begin
/ / soma na varia vel
SUCESSO a quantidade
de vezes
0 ativo
escolhido
0 destine
Banco. Query. Close;
Banco. Query. Da taSource
: = Banco. DSHis torico;
Banco. Query .Open;
Banco. Query. SQL. Clear;
Banco.Query.SQL.Add(
'SELECT COUNT(*) AS Sucesso
FROM tb historico
l'iHERE Host = "'+Editl.Text+'"
AND Resposta
<> 4194324');
Banco. Query. Open;
Sucesso
: = Banco.Query.
Fields
[0) .Aslnteger;
alcancou
foi
II soma na variavel
TOTAL a guantidade
de vezes
testado
Banco. Query. Close;
Banco. Query. DataSource
: - Banco. D5Histor
ico;
0 ativo
escolhido
93
Banco. Query. Open;
Banco. Query. SQL. Clear;
Banco.Query.SQL.Add(
'SELECT COUNT(*} AS Total
1'1HERE Host
= "'+Editl.Text+'''');
Banco. Query .Open;
Total
: = Banco. Query. Fields
[OJ .P..slnteger;
/ / seleciona
Banco. Query.
to 0 historico
Close;
Banco. Query.
Banco. Query.
Banco. Query.
DataSource
Open;
SQL. Clear;
do ativQ
: '" Banco.
//
percentuais
Format
Format
total
> 0 then
begin
/ / faz a percentual
Perdas
:= Total
PorcentualP
: = Perdas
PorcentualS
:= Sucesso
end;
faz
a formata<:;ao
escolhido
DSHistorico;
* FROM tb_historico
Banco.Query.SQL.Add('SELECT
"'+Editl.Text+'''')
;
Banco. Query. Open;
if
FROM tb_historico
*
I1HERE Host
=
Sucesso;
100 / Total;
" 100 I Total;
necessaria
para
a apresentacao
do
totais
e as
FormGeraRelatorio.
QRPerdasP.
Caption
:=
{' %3n' I (PorcentualP]
) +' %' ;
FormGeraRela
torio.
QRSucessoP.
Caption
:=
( , % 3n ' I [Porcen tualS] ) + ' %' ;
FormGeraRelatorio.
QRTotalP. Caption
: = '100%';
FormGeraRelatorio.
QRPerdas .Caption
: = Format {' %5n' I [Perdas] } ;
FormGeraRelatorio.
QRSuces$o. Caption
: = Format {' %5n' I (Sucesso]
);
FormGeraRelatorio.QRTotal.Caption
:= Format {' %5n' I [Total] };
FormGeraRelatorio.
QRNome. caption
: = ' Relat6rio
de Disponibilidade
do Ati vo de Rede 'i
FormGeraRelatorio.
end;
end;
end.
QuickRep1
Preview;
94
APENOICE
unit
6 - COOIGO
FONTE - Form_RelatorioPeriodo
Form_RelatorioPeriodo;
interface
'tlindows,
Forms,
Dialogs,
DBTables,
Messages,
SysUtils,
Buttons,
StdCtrls,
Form_Banco;
Variants,
ExtCtrls,
Classes,
Cornetrls,
Graphics,
Grids,
DBGrids,
Controls,
DB,
type
TFormRelatorioPeriodo
- class
(TForm)
Bevell:
TBevel;
StatusBarl:
TStatusBar;
PageControll:
TPageControl;
TabSheetl:
TTabSheet;
Labell:
TLabel;
DateTimePickerl:
TDateTimePicker;
Labe12:
TLabel;
DateTimePicker2;
TDateTimePicker;
Btnlmprimir:
TSpeedButton;
Beve12:
TBevel;
BtnApagar:
TSpeedButton;
procedure
BtnlmprimirClick(Sender:
TObject);
procedure
FormActivate
(Sender:
TObject);
procedure
BtnApagarClick(Sender:
TObject);
private
( Private
declarations)
public
{ Public
declarations
end;
var
FormRelator
ioPer
iodo:
TFormRelatorioPeriodo;
implementation
uses
Form_GeraRelatorio;
(SR .•. dfm)
procedure
TFormRelatorioPeriodo.
BtnImprimirClick
(Sender:
TObject);
var
Inicio,
Final
string;
Sucesso,
Total,
PorcentualP,
Perdas,
PorcentualS
Real;
begin
/ / faz verificacao
entre
a data
inicial
e a data
final
If DateTimePicker2.
Date < DateTimePickerl.
Date Then
begin
ShowMessage
(' Intervalo
de datas
invalido,
a data
inicial
e maior
data
final!');
DateTimePicker2
Date
:= DateTimePickerl.Date;
end
else
begin
/ / soma na variavelque
SUCESSO a quantidade
testes
as ativos
de redes
no periodo
escolhido
Inicio
: = DateToStr
(DateTimePickerl.
Date);
de
vezes
teve
sucesso
que
a
nos
95
Final
:= oateToStr
(DateTimePicker2.
Date) ;
Banco.Query.
Close;
Banco. Query. DataSource
::z
Banco. DSHistor ieo:
Banco. Query. Open;
Banco .Query.
SQL.Clear;
Banco. Query. SOL.Add (' SELECT COUNT(*)
AS Suc8ssa
FROM tb_historico
I·JHERE
Data
>= '+#34+Inicio+B34+'AND
Data
<c'+#34+Final+fi34+'
AND Resposta
<>
4194324')
:
Banco.Query.Open;
Sucesso
: = Banco. Query. Fields
[0] .Aslnteger;
/ / soma
na
variavelque
TOTAL a quantidade
de
vezes
que
as
ativos
de
redes
foram testados
no periodo
escolhido
Banco .Query. Close;
Banco. Query. DataSource
: z: Banco. DSHistorico;
Banco .Query. Open:
Banco.Query.
SOL. Clear;
Banco.Query.SQL.Add('SELECT
COUNT(*)
AS Total
FROM tb historico
~'l'HERE
Data >'"
'+#34+Inicio+#34+'AND
Data
<='+~34+f'inal+1i34+");
Banco. Query. Open;
Total
; - Banco. Query. Fields
(0) .Aslnteger;
1/ seleciona
todos
ativos
de
redes
que
for am
escolhido
Banco. Query. Close;
Banco.Query.
DataSource
;::z Banco.
DSHistorico;
Banco.Query.Open;
Banco.Query.
SQL. Clear;
Banco.Query.SQL.Add(
'SELECT
f'ROM
tb historico
'+# 34 + Inicio+#34
+ 'AND Data
<=' + 1134+ f'inal + 1134+ 't) ;
Banco. Query. Open;
Banco. Query. DataSource
; - Banco. DSHistorico;
if
total
> 0 then
begin
/ / faz
0 percentual
Perdas
; - Total
- Sucesso;
PorcentualP
; •• Perdas
* 100
PorcentualS
end;
:"" Sucesso
*
100
//
faz
a
formatacao
necessaria
perncentuais
FormGeraRelatorio.QRPerdasP.Caption
f'ormGeraRelatorio.QRSucessoP.Caption
FormGeraRelatorio.QRTotalP.Caption
de
/
testados
no
periodo
WHERE
Data
dos
totais
Total;
/
Total;
para
a
apresentacao
;=
;=
Format ('%3n' I (PorcentualP))
;= Format
(' %3n' I (PorcentualS))
'100%' i
f'ormGeraRelatorio.QRPerdas.
Caption
;,. f'ormat (' %5. On' , [PerdasJ
);
FormGeraRelatorio.QRSucesso.Caption
;= Format
( '%5.0n'
I (Sucesso]);
f'ormGeraRelatorio.QRTotal.Caption
; = Format (' %5. On' I [Total]
);
f'ormGeraRelatorio.
QRNome. caption
; "" ' Disponibilidade
dos Ati vos
' + inicio
+ ' a ' + f'inal;
FormGeraRelatorio.
QuickRepl
Preview;
end;
end;
procedure
TFormRela
torioPeriodo.
FormActi va te (Sender;
begin
II inicializa
0 inicio
e 0 £lm com a data
do dia
DateTimePickerl
Date;=
Date{);
DateTimePicker2.
Date
: = Date () ;
TObj ect)
;
e
+' %';
+' %';
de
Rede
96
end:
procedure
Inicio
Final
TFormRelatorioPeriodo.
BtnApagarClick
(Sender:
TObject)
;
string;
string;
begin
DateTimePicker2.
Date < DateTimePickerl.
Date Then
begin
ShowMessage (' Intervalo
de datas
invalido, a data
a data
final!')
i
DateTimePicker2
Date
: "" DateTimePickerl.
Date;
end
else
begin
If
inicial
e
maiar
1/ elimina todo 0 historico entre as datas selecionadas
Inicio := DateToStr (DateTimePickerl.
Date) ;
Final
:= DateToStr{DateTimePicker2.Date);
Banco. Query. Oa taSource
: = Banco. OSHis tor ico;
Banco. Query. Close;
Banco .Query.
SQL. Clear;
Banco. Query. SQL.Add (' DELETE
FROM
tb historico
, +fi 34 +Inicio+#
34 + 'AND Oa ta <=' +# 34+Final
+ fi 34-+ I , ) ;
Banco .Query. ExecSQL;
ShowMessage (' Dados apagados com sucesso.');
end;
end;
end.
WHERE
Data
que
97
APENDICE
CODIGO
7
FONTE
-
BIBLIOTECA
PING
MODIFICADA
Creditos:
Author:
Creation:
Version:
EMail:
Biblioteca
Ping
Fran<;ois
PIETTE
November
30,
1997
1.03
francais.
[email protected]
francais.
[email protected]
francais.
[email protected]
Description:
Legal
issues:
Updates:
Dec 13,
1997
Dec 26, 1998
Nov 10, 2002
Vl 01 Use the
new OnEchoRequest
and OnEchoReply
events.
VI 02 Changed
event
handler
for
new TPing version
(1.10)
VI 03 Added Reply.Status
in display
when failed
Changed
argument
name from Error
to Status
in EchoReply
event
(same change
has in component).
Desenvolvimento
do
Helio
Ishii
Stroparo
Rafael
Avila
Leite
,
/ /www.overbyte.be
/ /www.rtfm.be/fpiette
This
demo show how to use the TPing obj ect
to ping
any host.
Copyright
(e) 1997-2002
by Fran/;:ois
PIETTE
Rue de Grady
24,4053
Embourg,
Belgium.
Fax:
+32-4-365.74.56
<francais.
[email protected]>
projeto
de Gradua~ao
Faculdade
Tuiuti
Orientador:
Roberto
Ultima
http
http
Atualiza9ao:
do
Neia
Curso
de
Tecnologia
em Informatica
Amaral
Prot6tipo:
10/11/2006
'}
unit
PingTstl;
interface
I'lindows,
Messages,
SysUtils,
Ping,
StdCtrls,
Menus,
DB,
DBIProcs,
Form_Banco;
type
TPingTstForm
= class
(TForm)
Ping1:
TPing;
MainMenul:
TMainMenu;
Cadastrol:
TMenultem;
Nl: TMenultem;
Gruposl:
TMenuItem;
Ferramentasl:
TMenuItem;
Histricosl:
TMenuItem;
Porgrupol:
TMenuItem;
N4: TMenuI tern;
Classes,
DBTables,
Graphics,
ExtCtrls,
Controls,
ComCtrls,
Forms,
Grids,
Dialogs,
DBGrids,
98
Perodal:
TMenultem;
N3: TMenultem;
sair2:
TMenultem;
PageControll:
TPageControl;
TabSheetl:
TTabSheet;
TabSheet2:
TTabSheet;
Bevell:
TBevel;
Beve12:
TBevel;
StatusBarl:
TStatusBar;
TimerAtivo:
TTimer;
TimerGrupo:
TTimer;
GroupBoxl:
TGroupBox;
Hos tEdi t: rEcti t;
PingButton:
TButton;
CancelButton:
TButton;
GroupBox3:
TGroupBox;
ComboBoxl:
TComboBox;
GroupBox5:
TGroupBax;
DysplayMemoGrupo:
TMemo;
PingButtonGrupo:
TButton;
CancelButtonGrupo:
TButton;
GroupBox2:
TGroupBox;
DisplayMemo:
THeme;
procedure
PingButtonClick(Sender:
TObject);
procedure
PinglDisplay(Sender:
TObject;
Iemp:
TObject;
Msg: String);
procedure
PinglDnsLookupDone(Sender:
TObject;
Error:
vlord) i
procedure
CancelButtonClick
(Sender:
TObject) i
procedure
PinglEchoReply(Sender:
TObject;
Icmp:
TObject;
Status:
Integer)
;
procedure
NIClick(Sender:
TObject);
procedure
Grupos lClick
(Sender:
TObject) ;
procedure
SairlClick:
(Sender:
TObject);
procedure
sair2Click{Sender:
TObject);
procedure
PerodolClick
(Sender:
TObject);
procedure
TimerAti voTimer (Sender:
TObject);
procedure
ComboBoxlChange
(Sender:
TObject);
procedure
PingButtonGrupoClick
(Sender:
TObject);
procedure
CancelButtonGrupoClick{Sender:
TObject);
procedure
TimerGrupoTimer
(Sender:
TObject);
procedure
PorgrupolClick
(Sender:
TObject) ;
procedure
PageControllChange
(Sender:
TObject);
procedure
ComboBoxlDropDown (Sender:
TObject);
end;
var
PingTstForm:
implement
TPingTstForm;
a t ion
uses
Form CadastroComputadores,
Form _ Rela torioAti
vo;
iSR
'", "
Form_ CadGrupos,
Form _ Rela tor ioPeriodo,
*.DFM)
,
procedure
TPingTstForm.
PingButtonClick
begin
/ / quando
clicado
no botao
TESTAR
if HostEdit
Text <> I, then
begin
(Sender:
TObject);
99
PingButton.
Enabled
CancelButton.Enabled
TimerAtivo
Enabled
end;
end;
; •• false;
:= true;
:= true;
/ /
1/
II
desabilita
habilita
executa
0 batao
TESTAR
0 batao
PARAR
0 componente
timer
INDIVIDUAL
·
.}
procedure
TPingTstE'orm.
PinglDnsLookupDone
(Sender:
TObject;
Error:
begin
/ I S8 naa alcancar
0 atlva
de rede
no tempo determinado
adiona
componente
meme
/ / e envia
0 resul
tado
para
0 componente
PING
if Error <> 0 then begin
Disp!ayMemo.Lines.Add('Host:'
+ HostEdit.Text
+ I
l'lord);
Inacessi vel') ;
Exit;
end;
Ping!. Address
Pingl.Ping;
end;
·
{*""..,,,
:-
.• ""
Pingl.
.•
*"
.}
procedure
TPingTstForm.
String)
i
begin
DisplayMemo.
Lines
end;
DnsResul
t;
*""
*"
*
. Add (Msg);
{' •• , ••••••••••
·
{* ,
•••
* • * • * ••
recebe
realiza
(Sender:
/Iadiciona
, ••••
CancelButtonClick
para
verificar
result
Iemp:
ado
TObject;
no
campo
Msg:
memo
, •• * •
(Sender:
II
desabilita
:= true;
:= false:
II
II
habilita
desabilita
* * •••
TObject;
0
: = false;
,
0 endereco
0
ping
*"""
PinglDisplay
'}
procedure
TPingTstForm.
begin
TimerAti
vo. Enabled
INDIVIDUAL
PingButton.Enabled
CancelButton.Enabled
end;
*
/1
1/
TObject)
0
0
componente
i
timer
botao
TESTAR
0 botao
PARAR
* * •••••••••••
,
,
*}
procedure
TPingTstForm.
PinglEchoReply
(
Sender
TObject;
Icmp
TObject:
Status
Integer);
I I componente
que retorna
0 echo
do ping
begin
if Status
<> 0 then
I I conseguiu
atingir
0 ativo
de rede
( Success
)
DisplayMemo.Lines.Add('IP:
' + Ping1.HostIP
+ '
Tamanho do pacote:
' + IntToStr
(Pingl.
Reply. DataSize)
+
+IntToStr(Ping1.Reply.RT'l')
+ ' ms')
else
I I nao atingiu
0 ativo
de rede
( Failure
)
DisplayMemo.Lines.Add('IP:
' + Pingl
HostIP
+ ' - Inacessivel');
end;
• ,
• ,
100
{..
•.. ~
+
'"
•
•.. .•
•.. '"
•.
•.. "
•..
I<
•.
••.
•••
••.
• '1
procedure
TPingTstForm.
begin
/ I chama 0 formulario
FormCadastroComputadores
end;
NIClick
de
(Sender:
TObject);
cadastro
ativo
. ShowModal;
procedure
TPingTstForm.
GruposlClick
begin
/ I chama 0 formulario
de cadastro
FormCadGrupos.
ShowModal;
end;
(Sender:
atlvo
procedure
TPingTstForm.5airlCllck(Sender:
begin
/ /encerra
a aplica~ao
Applica tion. Terminate;
end;
procedure
begin
TPingTstForm.
Ilencerra
Applica
end;
sair2Click
de
redes
TObject);
de
redes
TObject);
(Sender:
TObject);
a aplicac;ao
tion.
Termina te;
procedure
TPingTstForm.
begin
/ /chama
0 formulario
FormRelatorioPeriodo.
end;
PerodolClick
(Sender:
com a apcao
ShowModal;
de
TObject);
relatorio
por
periodo
procedure
TPingTstForm.
TimerAtivoTimer
(Sender:
TObject);
begin
/ / chama 0 componente
ping
passando
como parametro
0 conteudo
do campo
hostedit
/ / este
componente
ficara
em looping
ate
0 botao
parar
seja
acionadp
/ / neste
componente
TIMER 0 tempo
foi
padronizado
em 2000 mili
segundos
Pingl.
DnsLookup (HostEdit.
Text);
Banco. Query. Close;
/ / set
a query
para
trabalhar
com 0 grupo
Banco.Query.
DataSource
: = Banco. DSGrupo;
Banco.Query.Open;
Banco.Query.
SQL. Clear;
/ / iosere
as variaveis
HOST, PACOTE, RESPOSTA, DATA na tabela
TB_HISTORICO
/ / caracter
B4
e igua
aspas
simples
Banco.Query.
SQL.ADD ( 'INSERT INTO tb historico
(Host,
Pacote,
Resposta,
Data,
Hora) VALUES (' +1i34+HostEdit.
Text+1i34+',
•+n34+
IntToStr
(Ping!.
Reply. DataSize)
+#34+',
'+#34+
IntToStr
(Pingl.
Reply.RTT)
+#34+',
'+#34+DateToStr
(now) +1134+',
'+1t34+TimeToStr
(now) +#34+')
') ;
Banco.Query.Open;
end;
procedure
TPingTstForm.
ComboBoxlChange
(Sender:
TObject);
begin
1/
/ /
Traz
todos
os ativos
de rede
conteudo
do campo comboboxl
que
forem
do
grupo
escolhido
atraves
do
101
Banco. Query. Close;
Banco. Query. SQL. Clear;
Banco.Query.SQL.Add(
'SELECT
cod grupo='
+ComboBoxl.
Text+'
I )
Banco .Query.
Open:
end;
FROM tb_computadores
procedure
TPingTstForm.
PingButtonGrupoClick
begin
if comboboxl.
Text
<> .' then
begin
PingButtonGrupo.
Enabled
false;
CancelButtonGrupo.
Enabled
: = true;
TimerGrupo.
Enabled
: = true;
end;
end;
/1
procedure
TPingTstForm.Cance18uttonGrupoClick
begin
PingButtonGrupo.Enabled
:= true:
CancelButtonGrupo.Enabled
:= false;
TimerGrupo.Enabled
:= false;
end;
II
II
procedure
TPingTstForm.
WHERE
;
TimerGrupoTimer
(Sender:
/ /
/ /
desabilita
habilita
executa
TObject);
0 batao
TESTAR
a batao
PARAR
0 componente
T!MERGRUPO
(Sender:
II
habilita
desabilita
executa
(Sender:
TObject)
i
0 batao
TESTAR
0 batao
PARAR
a componente
TIMERGRUPO
TObj ect)
;
IP
String:
begin
/ / Traz
todos
as ativos de rede
que forem
do grupo
escolhido
atraves
do
/ / conteudo
do campo comboboxl
I I neste
componente
TIMER a tempo
foi padronizado
em 2000 nili
segundos
Banco. Query. Close;
Banco.Query.
SQL.Clear;
Banco.Query.
SQL.Add('
SELECT .•. FROM tb_cornputadores
I'IHERE
cod grupo='
+CornboBoxl.
Text+'
') ;
Banco. Query. Open:
/I posiciona
no primeiro
registro
da selecao
Banco. Query. First;
1/ executa
todos
os ativos
de rede
do grupo
while
not
Banco.Query.Eof
do
begin
IP :'" Banco.Query.Fields[4j.AsString;
II pega
a conteudo
do IP
Pingl.DnsLookup(IP);
II executa
0 componente
ping
1/ insere
as variaveis
HOST, PACOTE, RESPOSTA,
DATA na tabela
TB_HISTORICO
/ / caracter
#34 e igual
aspas
simples
Banco. Queryl.
Close;
Banco. Queryl.
SQL. Clear;
Banco.Queryl.SQL.ADD(
'INSERT
INTO tb historico
(Host,
Pacote,
Resposta,
Data,
l-!ora)VALUES('+#34+IP+#34+'~
'+#34+
IntToStr
(Pingl.
Reply. DataSize)
+#34+',
'+#34+
IntToStr
(Pingl.
Reply.
RTT)
+#34+',
'+#34+DateToStr
(now) +#34+',
'+#34+TimeToStr
(now) +#34+')
') ;
Banco. Queryl.Open;
Banco. Query. Next;
end;
end;
procedure
TPingTstForm.
begin
/ /chama
0 formulario
FormRelatorioAtivo.
PorgrupolClick
com a opcao
ShowModal;
(Sender;
de
relatorio
TObject);
par
ativo
de
rede
102
end;
procedure
TPingTs
tForm.
PageControllChange
(Sender:
TObj ect)
;
begin
1/
1 impa 0 campo memo
Displayt-lemo.
Clear;
end;
TPingTstForm.ComboBoxlDropDown
(Sender:
e adiciona
ComboBoxl. Items. Clear;
Banco. tb grupo. First;
while
not Banco. tb_Grupo.
Eat
begin
ComboBoxl. Items. Add (Banco
Banco tb _Grupo. Next;
end;
end;
end.
TObj ect)
no
;
componente
combobox
( I Cod_grupo
') .AsString)
do
tb_Grupo
FieldsyName
;