¡Bienvenid@ a La bloguera.net! Iniciar sesión | ÚNETE a la web | Ayuda





 
Crea tu propio cliente Telnet en C#

   Por necesidades de un nuevo proyecto, me he visto involucrado en la necesidad de establecer una conexion telnet, por lo que ya que nos ponemos a invetigar lo hacemos desde un Pocket PC, aunque el codigo que presento es independiente del dispositivo, incluso Mono.

  Despues de revisar varias librerias tipo dotnettelnet, me decante por Minimalistic Telnet, basicamente por que se adaptaba mas a mis necesidades y se ve mucho mas claro lo que pretendemos hacer a nivel de aprendizaje.

  Receta facil, facil, facil, utilizando dos simples funciones podremos trabajar contra nuestro servidor

  Primero agregamos a nuestro proyecto el fichero Minimalistic Telnet, y creamos el par de funciones, la primera es meramente para establecer la conexion, siendo los pasos necesarios conectar, y autenticarse ( txtDebug es un componente TextBox para poder ver los resultados ):

private void ConectToServer (string ip, string login, string password, int port, int timeout)
{

try
{

txtDebug.Text += "Conectando con " + ip + ":" + port + "... ";

//Conectar al servidor telnet
tc = new TelnetConnection(ip, port);

//Nos logueamos en el servidor
txtDebug.Text + = tc.Login(login, password, timeout);

// Comprobamos el simbolo del prompt para asegurarnos logueo, "$" , "#" o ">", cada servidor nos pondra el que el desee
string prompt = s.TrimEnd();
txtDebug.Text += s;
prompt = s.Substring(prompt.Length - 1, 1);

if (prompt != "$" && prompt != ">" && prompt != "#")

//Podremos lanzar excepcion new Exception("Connection failed") o bien mostrarlo por pantalla;
txtDebug.Text += "Connection failed";

if (tc.IsConnected)
{
txtDebug.Text = "Conectado !!";
}

}

catch (Exception ex)
{
      txtDebug.Text += "Error de conexion: " + ex.Message;
}

}

 

   Una vez conectados, ya podremos enviar directamente los comandos a ejecutar con otra sencilla funcion:

private string SendTelnetData(string prompt)
{

// Si esta conectado ...
if (tc.IsConnected)
{

// enviamos el comando
tc.WriteLine(prompt);
prompt += tc.Read();

}

else
{
          lblStatus.Text = "Desconectado";
}

return prompt;

}

Con las llamadas a estas dos funciones tenemos todo solucionado, por ejemplo:

ConectToServer ("192.168.1.1", "usuario", "contraseña", 23, 100);
SendTelnetData("comando1");
SendTelnetData("comando2");

No olvidemos que para desconectar solo nos seria necesario enviar la instruccion: 

SendTelnetData("exit");

Quien se anima a hacer la version en SSH??

Posted: martes, 03 de julio de 2007 17:48 por Thempra

Comentarios

nemoa4 ha opinado:

hola al igual que tu me he involucrado en un proyecto en el cual tengo que utilizar una conexion telnet en un programa de escritorio desarrollado en c#, soy nuevo en este lenguaje no me ha sido dificil hacer algunas aplicaciones sin embargo no he encontrado un buen sitio en el cual se expllique bien una conexion a un servidor via telnet y mediante el cual pueda enviar comandos y tu codigo se ve que es lo que requiero para continuar con mis labores pero no he logrado armarlo ya que de varias formas he intentado hecerlo galar pero no puedo ya que no se en que parte del codigo debo poner las funciones me gustaria saber si me puedes enviar el codigo mas detallado o ya galando para que lo adecue a mis nececidades mi correo es nemoa4@hotmail.com de ante mano te agradesco la ayuda. saludos coordiales

# enero 15, 2008 1:29
No se permiten comentarios de usuarios anónimos