Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Problemas con TIdTelnet para varias PCs.

HOla comunidad!!!
Tengo un problema que ya nos e como darle solucion. Resulta que tengo varias PCs con sus IPs y sus nombres en un StringGrid, y quiero hacer mediante Telnet un "open" a las PCs de esa lista mediante un puerto determinado. Para ello lo que hago es recorrer la StringList desde 0 hasta su Cant - 1 pero tengo problemas con el TIdTelnet. Veran, cuando en una PC esta instalado el MySQL, y se le envia esta cadena Telnet: "Open 172.16.xxx.xxx 3306", el MySQL esta escuchando por ese puerto y responde con una cadena de bytes donde los primeros corresponden a la version de MySQL instalado y los demas no son interesantes(al menos para mi caso). Entonces, lo que yo quiero es enviar este comando a cada una de las PCs de mi lista y ver cual me responde para guardar en otra lista los nombres de las PCs que respondieron ademas de la version de MySQL que es lo que envia la PC encuestada. Esto lo trato de hacer con un componente TIdTelnet, donde en el ciclo que recorre la lista le doy el Host y el Port.

Esta es la funcion en la que trato de hacer lo antes explicado:

Código:
function TFrmScanner.ServerExist(Port: Word; Host: String): Boolean;
begin
  IdTelnet.Host := Host;
  IdTelnet.Port := Port;
  try
    IdTelnet.Connect;
    ServerList.Add(Host);
    Result := True;
  except
    Result := False;
    IdTelnet.Disconnect;
  end;
end;
Hasta aqui todo bien... Si la CurrentHost al tratar deconectarse a ella por el puerto 3306 no lo permite envia esta excepcion :

Código:
Project ServersScanner.exe raised exception class EIdSocketError with message 'Socket Error # 10061
Connection refused.'. Process stopped. Use Step or Run to continue.
Significa que no hay MySQL en la PC en cuestion. Hasta aqi todo bien, pero al tratar deconectar a la segunda, se me salta esta otra excepcion:

Código:
Project ServersScanner.exe raised exception class EIdAlreadyConnected with message 'Already connected.'. Process stopped. Use Step or Run to continue.
Yo pense que el IdTelnet.Disconnect queya habia puesto garantizaba que esta ultima excepcion no ocurriera, pero evidentemente no es asi.

Para tratar de solucionar esto intente crear un IdTelnet en RunTime, de la siguiente manera:

Código:
function TFrmScanner.ServerExist(Port: Word; Host: String): Boolean;
Var
  IdTelnet : TIdTelnet;
begin
  IdTelnet := TIdTelnet.Create(Form1)
  IdTelnet.Host := Host;
  IdTelnet.Port := Port;
  try
    IdTelnet.Connect;
    ServerList.Add(Host);
    Result := True;
  except
    Result := False;
    IdTelnet.Disconnect;
    IdTelnet.Destroy;
  end;
end;
Pero tambien me da excepciones.
Alguien pudiera darme alguna idea??
Responder Con Cita
  #2  
Antiguo 25-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A lo peor me estoy equivocando, pero, creo que tendrías que utilizar "try...finally" y en la cláusula "finally", precisamente, desconectar. No digo que no uses "try..except", pero puedes usar entrambas, más o menos de este modo:

Código Delphi [-]
 function TFrmScanner.ServerExist(Port: Word; Host: String): Boolean;
 begin
   IdTelnet.Host := Host;
   IdTelnet.Port := Port;
   try
     try
       IdTelnet.Connect;
       ServerList.Add(Host);
       Result := True;
     except
       Result := False;
     end;
   finally
     IdTelnet.Disconnect;
   end;
 end;

(Por otro lado, en cualquier caso, por favor, edita tu mensaje, sitúa el código Delphi entre etiquetas [ DELPHI ] y ganaremos todos)
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:42:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi