Cómo saber si estoy conectado a Internet con C#

No es preciso saber si una computadora esta conectada a Internet con C# pero podemos saber si efectivamente se realizo la conexión a un sitio especifico y deducir si la computadora esta efectivamente conectada o no.

Podemos verificar un par de cosas que si bien no nos aseguran que se realice una conexión efectiva si pueden ayudarnos a verificarla.

Primero podemos revisar la conexión a la Red local, si no esta conectada entonces no hay Internet, de lo contrario solo podemos asegurar que esté conectada al módem por ejemplo mas no que tenga salida a Internet.

string Estado = "";
bool RedActiva = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
 
if (RedActiva)
     Estado = "Se estableció conexión con la red local";
else
     Estado = "No está conectado a la red";

Ahora si estamos conectados a la Red podemos enviar un ping a una pagina en Internet para asegurar la conexión.

string Estado = "";
System.Uri Url = new System.Uri("https://www.google.com/");

System.Net.WebRequest WebRequest;
WebRequest = System.Net.WebRequest.Create(Url);
System.Net.WebResponse objetoResp;

try
{
     objetoResp = WebRequest.GetResponse();
     Estado = "Se establecio conexión a internet corretamente.";
     objetoResp.Close();
}catch (Exception e)
{
     Estado = "No se pudo conectar a Internet " + e.Message;
}
WebRequest = null;

Si se realiza correctamente podemos asegurar que si hay conexión, de lo contrario tenemos que esperar a que entre al catch y eso puede tardar unos segundos.

No se puede hacer conexión con todos los sitios por la configuración de cada uno de ellos, con google.com si se puede y es el que mas se usa para estos casos, de lo contrario puede arrojar un mensaje como este

No se puede crear un canal seguro SSL/TLS.

Pero eso no asegura que la conexión fue fallida.

Loading

Crear una DataTable en C#

Vamos a crear una DataTable y agregarle columnas y filas manualmente

Primero declaramos la Tabla, la Columna y la Fila

DataTable tabla = new DataTable();

// Variables para las columnas y las filas
DataColumn column;
DataRow row;

Construimos la primera Columna asignándole Nombre y Tipo de datos y la agregamos a la Tabla

// Se tiene que crear primero la columna asignandole Nombre y Tipo de datos    
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "Codigo";
tabla.Columns.Add(column);

Tenemos que hacer lo mismo por cada Columna que queramos agregar

// Se tienen que crear todas las columnas que queramos
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Descripcion";
tabla.Columns.Add(column);
            
column = new DataColumn();
column.DataType = Type.GetType("System.Decimal");
column.ColumnName = "ValorUnitario";
tabla.Columns.Add(column);

Ahora agregamos los registros a nuestra Tabla, para eso creamos una Fila que tenga relación con la Tabla y por cada Columna llenamos los valores que queramos y por ultimo agregamos la Fila a la Tabla

// Se crea una fila por cada registro que necesitemos agregar    
for (int i = 1; i < 11; i++)
{
     row = tabla.NewRow();
     row["Codigo"] = i;
     row["Descripcion"] = "Nombre del codigo " + i.ToString();
     row["ValorUnitario"] = i * 2;
     tabla.Rows.Add(row);
}

Este es el resultado

Así queda el código completo

DataTable tabla = new DataTable();

// Variables para las columnas y las filas
DataColumn column;
DataRow row;

// Se tiene que crear primero la columna asignandole Nombre y Tipo de datos    
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "Codigo";
tabla.Columns.Add(column);

// Se tienen que crear todas las columnas que queramos
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Descripcion";
tabla.Columns.Add(column);
            
column = new DataColumn();
column.DataType = Type.GetType("System.Decimal");
column.ColumnName = "ValorUnitario";
tabla.Columns.Add(column);

// Se crea una fila por cada registro que necesitemos agregar    
for (int i = 1; i < 11; i++)
{
     row = tabla.NewRow();
     row["Codigo"] = i;
     row["Descripcion"] = "Nombre del codigo " + i.ToString();
     row["ValorUnitario"] = i * 2;
     tabla.Rows.Add(row);
}

Loading