Fórum Listar todos os servidores de BD na rede #298053
01/10/2005
0
Boas, alguem sabe como listar todos os servidores de algum BD espefico que estejam logados na rede?
Eu consegui listar o grupo de trabalho e os pcs da rede, joguei num treeview e tal..funciona blza, mas queria ser mais especifico e listar apenas os servidores..
uma coisa que eu testei e funcionou, foi conectar com sockets nos pcs utilizando a porta do banco que eu quero..por exemplo, como listo todos os pcs, eu tento conectar na porta 3301(mysql) de cada um, aih os que responderem eu jogo num array e assim tenho os servers, mas ficou mto lento e eh chato pra fazer a consistencia das informacoes..
alguem ae pode dar uma ajuda??
falow, abracos..
Eu consegui listar o grupo de trabalho e os pcs da rede, joguei num treeview e tal..funciona blza, mas queria ser mais especifico e listar apenas os servidores..
uma coisa que eu testei e funcionou, foi conectar com sockets nos pcs utilizando a porta do banco que eu quero..por exemplo, como listo todos os pcs, eu tento conectar na porta 3301(mysql) de cada um, aih os que responderem eu jogo num array e assim tenho os servers, mas ficou mto lento e eh chato pra fazer a consistencia das informacoes..
alguem ae pode dar uma ajuda??
falow, abracos..
Saint
Curtir tópico
+ 0
Responder
Posts
01/10/2005
Vinicius2k
Colega,
Acho que não tem como ser muito rápido, afinal vc está construindo um scanner. Acho que o melhor caminho (senão único) é o que vc tomou testando a conexão de cada host em cada porta. Mas eu também acho que vc poderia usar um outro componente que *talvez* trabalhe melhor em raleção ao timeout: TIdTCPClient do pacote ´Indy Clients´.
Eu o utilizo para testar se o servidor especificado na configuração da aplicação está disponível antes de tentar a conexão com o SGBD.
Vc poderia utilizar algo parecido com isto:
T+
Acho que não tem como ser muito rápido, afinal vc está construindo um scanner. Acho que o melhor caminho (senão único) é o que vc tomou testando a conexão de cada host em cada porta. Mas eu também acho que vc poderia usar um outro componente que *talvez* trabalhe melhor em raleção ao timeout: TIdTCPClient do pacote ´Indy Clients´.
Eu o utilizo para testar se o servidor especificado na configuração da aplicação está disponível antes de tentar a conexão com o SGBD.
Vc poderia utilizar algo parecido com isto:
procedure... var Hosts: Array of String; Ports: Array[0..2] of Integer; I, J: Integer; begin // Aqui depende da sua lista de máquinas... vc pode medir o compri- // mento da lista para setar o comprimento do array e utilizar um // "FOR" p/ preencher os hosts de acordo com a sua lista. SetLength(Hosts, 2); Hosts[0] := ´localhost´; Hosts[1] := ´VDO´; // As portas que vc quer procurar. Ports[0] := 1433; // SQL Server Ports[1] := 3050; // Interbase/Firebird Ports[2] := 3306; // MySQL // O scanner for I := 0 to Length(Hosts) - 1 do begin idTCPClient1.Host := Hosts[I]; for J := 0 to (Length(Ports) - 1) do begin idTCPClient1.Port := Ports[J]; try idTCPClient1.Connect; except end; if idTCPClient1.Connected then begin ListBox1.Items.Add(´OK para a porta ´ + IntToStr(Ports[J]) + ´ em ´ + Hosts[I]); idTCPClient1.Disconnect; end; end; end; end;
T+
Responder
Gostei + 0
03/10/2005
Saint
Eh cara, acho que nao vai ter jeito mesmo...
eu queria deixar bem rápido mas isso tb nao é primordial, vou fazer isso e se o cliente reclamar eu listo todas as máquinas e deixo ele escolher..
valeu cara, forte abraco
eu queria deixar bem rápido mas isso tb nao é primordial, vou fazer isso e se o cliente reclamar eu listo todas as máquinas e deixo ele escolher..
valeu cara, forte abraco
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)