FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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; Código:
Project ServersScanner.exe raised exception class EIdSocketError with message 'Socket Error # 10061 Connection refused.'. Process stopped. Use Step or Run to continue. Código:
Project ServersScanner.exe raised exception class EIdAlreadyConnected with message 'Already connected.'. Process stopped. Use Step or Run to continue. 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; Alguien pudiera darme alguna idea?? |
#2
|
||||
|
||||
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:
(Por otro lado, en cualquier caso, por favor, edita tu mensaje, sitúa el código Delphi entre etiquetas [ DELPHI ] y ganaremos todos) |
|
|
|