private estadoConexion PruebaConexion() { MessageBox.Show("Prueba de Conexión de Cliente"); estadoConexion resultado = estadoConexion.ok; String testHttp = "GET /index.html HTTP/1.0\n\n"; String httpDoc = null; int cantRecibida = 0; Byte[] bytesParaEnviar = Encoding.ASCII.GetBytes(testHttp); Byte[] bytesParaRecibir = new Byte[1024]; string nombre = ""; IPAddress IPPrueba = null; IPEndPoint extremoPrueba = null; TcpClient clientePrueba = null; try { IPPrueba = Dns.GetHostEntry("www.epn.edu.ec").AddressList[0]; extremoPrueba = new IPEndPoint(IPPrueba, 80); } catch (Exception ex) { Traza("Parece que el DNS no funciona..."); resultado = ObtenerError(resultado, estadoConexion.problemaDns); } try { nombre = ((IPHostEntry)Dns.GetHostEntry("163.117.139.128")).HostName; TcpClient cliente = new TcpClient(); } catch (Exception ex) { Traza("Problemas con los sockets..."); return(ObtenerError(resultado, estadoConexion.problemaConSocket)); } try { cliente.Connect(extremoPrueba); NetworkStream flujo = cliente.GetStream(); flujo.Write(bytesParaEnviar, 0, bytesParaEnviar.Length); cantRecibida = flujo.Read(bytesParaRecibir, 0, bytesParaRecibir.Length); } catch (Exception ex) { Traza("Error en la conexión..."); return(ObtenerError(resultado, estadoConexion.errorDeRedOInalcanzable)); } httpDoc = Encoding.ASCII.GetString(bytesParaRecibir, 0, cantRecibida); Traza("Prueba finalizada"); return(resultado); }
private estadoConexion ObtenerError(estadoConexion actual, estadoConexion siguiente) { Traza("Error Detectado"); if (actual == estadoConexion.ok) { return(siguiente); } if (actual == estadoConexion.problemaDns) { if (siguiente == estadoConexion.problemaConSocket) { return(estadoConexion.problemaConDns_y_Socket); } else { return(siguiente); } } return(siguiente); }
// Prueba la conexión private estadoConexion PruebaConexion() { // Guarda en los logs la prueba de conexión Traza("Prueba de Conexión de Cliente"); // Define variables en la se almacenaran el nombre y puerto de los servidores //con los que se probara la conexión haciendo una petición del index.html al servidor estadoConexion resultado = estadoConexion.ok; String testHttp = "GET /index.html HTTP/1.0\n\n"; String httpDoc = null; int cantRecibida = 0; Byte[] bytesParaEnviar = Encoding.ASCII.GetBytes(testHttp); Byte[] bytesParaRecibir = new Byte[1024]; string nombre = ""; IPAddress IPPrueba = null; IPEndPoint extremoPrueba = null; TcpClient clientePrueba = null; // Intenta resolver el nombre www.epn.edu.ec y hace la conexion a su servidor. // de página web try { IPPrueba = Dns.GetHostEntry("www.epn.edu.ec").AddressList[0]; extremoPrueba = new IPEndPoint(IPPrueba, 80); } catch (Exception ex) { Traza("Parece que el DNS no funciona..."); resultado = ObtenerError(resultado, estadoConexion.problemaDns); } // Intenta obtener el nombre asociado a la IP: 163.117.139.128 try { nombre = ((IPHostEntry)Dns.GetHostEntry("163.117.139.128")).HostName; clientePrueba = new TcpClient(); } catch (Exception ex) { Traza("Problemas con los sockets..."); return(ObtenerError(resultado, estadoConexion.problemaConSocket)); } //Intenta contectarse al servidor de la EPN y solicitar su pagina web. try { clientePrueba.Connect(extremoPrueba); NetworkStream flujo = clientePrueba.GetStream(); flujo.Write(bytesParaEnviar, 0, bytesParaEnviar.Length); cantRecibida = flujo.Read(bytesParaRecibir, 0, bytesParaRecibir.Length); } catch (Exception ex) { Traza("Error en la conexión..."); return(ObtenerError(resultado, estadoConexion.errorDeRedOInalcanzable)); } // Decodifica los datos recibidos desde el resivor httpDoc = Encoding.ASCII.GetString(bytesParaRecibir, 0, cantRecibida); Traza("Prueba finalizada"); // Retorna el estado con el que se realizó la prueba return(resultado); }