Tag Archive for sharp

Operadores, Estructuras de control en C# (C Sharp)

Buenas a todos! Antes de seguir les recomiendo ver el anterior articulo (si no lo vieron)

Curso de C# (Tipos de datos)

Operadores Aritméticos

Operadores Lógicos

Estructuras de control

  • Condicionales

Sentencia If con varios formatos

if(x < 10)     //Hacer algo se ejecuta si x es menor que 10
HacerAlgo();

//******

if(x < 10)    // En este caso es igual al anterior,
{                //  pero al ser más de una instrucción,
 HacerAlgo();   // debemos colocarlos entre llaves ("{" "}")
 HacerAlgo2();
}

//******

if(x < 10)
{              //es indistinto el uso de llaves 
Hacer();       //en este ejemplo ya que es solo una linea
}
else           //Si la condicion anterior no es verdadera  (x < 10)
{              //se ejecuta  Hacer2() y no Hacer()
Hacer2();
}

Sentencia Switch

switch(entero)
{
  case 1:  
           //código que queremos ejecutar en caso de que entero sea igual a 1
           break; //Esta instruccion hace que salgamos del switch
  case 2:  
           //código
           break;
  default: 
           //codigo que querramos hacer en caso de que el "entero" sea
           //distintos a los anteriores casos
           break;       

}
  • Repetitivas

Sentencia For

for(int i=0;i<10;i++)  //partes: declaración(i = 0) ;                       
{                       //prueba o condición (i < 10); 
 //codigo               //acción(i++), aumenta i en 1
}

Sentencia Foreach

string[] nombre = new string[10];
//Esto lo veremos más adelante
foreach (string auxNombre in nombre)  //Foreach permite recorrer arreglos
{                                     // y colecciones
   //auxNombre es un elemento de nombre
}

Sentencia While

bool condicion = true;

while(condicion == true)
{
//codigo
//en algún momento poner condicion = false; 
// o si no será un buecle infinito
}

Sentencia Do-While

bool condicion = true;

do
{
//codigo
//en algún momento poner condicion = false; 
// o si no será un buecle infinito
}while(condicion==true);

//La unica diferencia entre while y do-while,
//es que en while la condicion debe ser verdadera para entrar
//en el bucle. Por ejemplo si cuando llega al while y condicion es falso, 
//el programa salta todo el while. O sea no entra.
//En cambio en el do-while, el programa entra al menos una vez, y al final 
//inspecciona la condicion

Ejemplos básicos de aplicación

1)muestre la tabla de multiplicar del número 5. Ejemplo
4 x 0 = 0
5 x 1 = 5

static void Main()
{
  int numero = 5;
  for(int i = 0; i < 10; i++)
     {
       System.Console.WriteLine("{0} X {1} = {2}", numero,i+1,numero*i);
   //si queremos agregar datos al texto que ponemos en 
   //consola ponemos {x}, donde x significa
   //el orden que va despues de la coma
   //ej. el {0} representa al primer elemento 
  //despues de la coma, el {1} el segundo y asi..
     }
  System.Console.ReadLine();
}

2)De un contador de 1 a 20, mostrar cuales son pares y cuales impares

static void Main()
{
    for(int i = 1; i <= 20; i++)
    {
      if(i % 2 == 0) 
         System.Console.WriteLine("{0} es par",i);
      else
         System.Console.WriteLine("{0} es impar",i);
    }
    System.Console.ReadLine();
}

// el símbolo % devuelve el resto entre la división de i en 2
//Por ejemplo si tenemos el número 100 y lo dividimos en dos,
// da de resultado 50, sin resto. En cambio si tenemos 101 y lo 
//dividimos en 2, también nos da 50 pero nos queda un 1. Obviamente
//en el mundo de los números enteros.
//Entonces si el resto da 1, quiere decir que es numero es impar

Hasta la próxima!

Sockets en C# (Parte 2)

Buenas a todos, esta es la segunda parte del tutorial sobre sockets en c#.
Para los que no vieron la primera parte acá se las dejo:

Sockets en C# (Parte 1)

En esta nueva entrega veremos como enviar y recibir texto.

Para ello crearemos el cliente y servidor, y lo conectaremos. Como vimos antes.

Para enviar

Algo ah tener en cuenta, es que el texto que queremos enviar, debe ser convertido en un array de bytes. Para ello utilizamos la clase Encoding.

 
byte[] txtAEnviar;    // creamos una array de byte
 txtAEnviar = Encoding.Default.GetBytes(texto);  // De esa manera pasamos a bytes el texto (string)

Una vez hecho lo anterior lo que queda es enviarlo. Para ello utilizaremos el socket que creamos y usamos su metodo Send().
Este método tiene algunos parametros:

miPrimerSocket.Send(a,b,c,d);
//a -> el array de bytes 
//b -> Posición del array de donde comienza a enviar
//c -> Tamaño del array. Esto se consigue con la propiedad Length
//d -> Especifica los comportamientos de envío y recepción del socket.Nosotros pondremos 0
//Nos quedaria así
miPrimerSocket.Send(txtAEnviar, 0, txtAEnviar.Length,0);

Para recibir

Primero antes que nada debemos crear el array de bytes, en esta primera medida le pondremos una tamaño de 255, Hay que tener en cuenta que si el cliente manda un array mayor habrá un error. Una solución seria primero mandar el tamaño del array y luego el array en sí. Pero ahora no viene al caso ya que es solo un ejemplo

byte[] byARecibir = new byte[255];

Ahora recibimos el array de bytes con el metodo del socket, Receive(). Este metodo devuelve un entero que luego usaremos

int enteroRecibido = miPrimerSocket.Receive(ByRec, 0, ByRec.Length, 0); 
//Los parametros son los mismos que los del metodo Send
//En el servidor usariamos el socket que usamos en la entrega anterior, osea, "Escuchar"

Ahora usariamos el metodo Resize de la clase Array para cambiar el numero de elementos de nuestro array en base al retorno del metodo Receive, ya que antes teniamos 255. Pero debemos pasarle el array por referencia.

Array.Resize(ref ByRec, enteroRecibido);

y listo, solo ahora queda pasar nuestro array de bytes a texto de la siguiente manera

string texto;
texto = Encoding.Default.GetString(ByRec)

Eso es todo por ahora, les dejo el ejemplo. Saludos!

Cliente

class Program
    {
        static void Main(string[] args)
        {
            Conectar();
        }
        public static void Conectar()
        {
            Socket miPrimerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint miDireccion = new IPEndPoint(IPAddress.Parse("192.168.0.11"), 1234);

            string texto;
            byte[] textoEnviar;

            try
            {
                miPrimerSocket.Connect(miDireccion);
                Console.WriteLine("Conectado con exito");

                Console.WriteLine("Ingrese el texto a enviar al servidor: ");
                texto = Console.ReadLine(); //leemos el texto ingresado 
                textoEnviar = Encoding.Default.GetBytes(texto); //pasamos el texto a array de bytes
                miPrimerSocket.Send(textoEnviar, 0, textoEnviar.Length,0); // y lo enviamos
                Console.WriteLine("Enviado exitosamente");

                miPrimerSocket.Close();
            }
            catch (Exception error)
            {
                Console.WriteLine("Error: {0}", error.ToString());
            }
            Console.WriteLine("Presione cualquier tecla para terminar");
            Console.ReadLine();
        }

Servidor

public static void Conectar()
        {
            byte[] ByRec;
            Socket miPrimerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint miDireccion = new IPEndPoint(IPAddress.Any, 1234);

            byte[] ByRec; 
            try
            {
                miPrimerSocket.Bind(miDireccion);
                miPrimerSocket.Listen(1);

                Console.WriteLine("Escuchando...");
                Socket Escuchar = miPrimerSocket.Accept();
                Console.WriteLine("Conectado con exito");

                ByRec = new byte[255]; 
                int a = Escuchar.Receive(ByRec, 0, ByRec.Length, 0);
                Array.Resize(ref ByRec, a);
                Console.WriteLine("Cliente dice: " + Encoding.Default.GetString(ByRec)); //mostramos lo recibido
                miPrimerSocket.Close();

            }
            catch (Exception error)
            {
                Console.WriteLine("Error: {0}", error.ToString());
            }
            Console.WriteLine("Presione cualquier tecla para terminar");
            Console.ReadLine();

        }