Ir al contenido principal

Sockets en C#

__ Índice __


¿Qué son los sockets en programación?

Ejemplo en C#

Github


__ ¿Qué son los socket en programación? __

Un socket es un método de comunicación entre un programa cliente y un servidor.


Entonces podemos decir que los sockets, son el "tunel" de comunicación entre dos aplicaciones.

__ Ejemplo en C# __

Servidor


 Creamos un nuevo proyecto en consola que será el código del servidor

Importamos las librerías necesarias para los sockets



Declaramos dos variables, una será la dirección del Server, ya que estamos haciendo todo en nuestra pc la dirección debe de ser la local, localhost o 127.0.0.1

La otra variable será el puerto de conexión, es recomendable seleccionar un puerto alto. Es por eso que las aplicaciones utilizan 8080.

Ahora tenemos que crear un objeto de tipo Socket, que nos pide tres parámetro:

1- Esquema del tipo de diccionario: AddressFamily.InterNetwork dice que utilizará una dirección IP de tipo 4.

2- El tipo de comunicación del Socket: SocketType.Stream nos permite una comunicación bidireccional de bytes sin duplicar o preservar datos.

3- Y el protocolo a utilizar para mantener la seguridad e integridad de los datos: ProtocolType.Tcp nos dice que utilizaremos el protocolo TCP en la comunicación.


A continuación creamos una variable de tipo Socket que nos dirá si la conexión se ha dado.

Y después un objeto de tipo IPEndPoint que representa el destino final al que tiene que conectarse. Nos piden dos atributos que son:

1- La dirección IP del server (Nuestra variable ipAddress que es 127.0.0.1)
2- El puerto (Que hemos puesto 8090)

El método .Bind asocia nuestro socket al punto final de referencia del IPEndPoint.

Y el método .Listen es para cuantas conexiones vamos a aceptar, en este caso serán 5.


Nuestra anterior variable connection, la vamos a igualar a nuestro objeto listen de tipo socket, y ponemos el método .Accept. Este será el que nos diga que la conexión se ha realizado correctamente.

Para saber que todo esta bien, mandamos a imprimir en consola un mensaje para avisar que todo va bien.


Vamos a declarar 3 variables:

1- Un arreglo de tipo Byte, ya que los sockets solamente mandan bytes y no texto o números.
 2- Un String que nos ayudará cuando pasemos los bytes del usuario a un tipo primitivo.
3- Para saber la longitud del mensaje que nos ha llegado por parte del cliente.
 igualamos nuestra variable arraySize a lo que nos llegue del usuario.
 Redimensionamos nuestro arreglo al tamaño del mensaje que nos ha llegado, esto con el fin de optimizar memoria.

Entonces con .Resize cambia el tamaño del arreglo.

Con Encoding-Default.GetString optenemos los Bytes y los pasamos a tipo primitivo (Texto)
 Mandamos por consola los datos que nos han llegado, y con .ReadKey hacemos que la consola no se cierre.

Cliente


Nuevamente creamos otro proyecto o solución en consola, e importamos las librerías necesarias paara trabajar.

Y declaramos dos variables que nos dirá la dirección del servidor y su puerto de conexión.

Creamos otro objeto de tipo socket y le pasamos las mismas tres propiedades.

Nuevamente creamos otro objeto de tipo IPEndPoint y le pasamos la dirección y el puerto.

En nuestro objeto listen de tipo Socket llamamos a su método Connect para establecer la conexión, solamente nos pide el objeto IPEndPoint.

La variable sends de tipo byte es la que mandará los bits por el socket. Y la variable data guardará el mensaje del usuario que desea mandar.

Mandamos un mensaje por consola para que el cliente sepa que tiene que escribir algo.

Console.ReadLile lee lo que el usuario escriba por teclado.
Y con Encoding.Default.GetBytes obtenemos los bytes que representarán el texto para ser mandados.

Ya con el método Send, mandas los bytes al server.

 

Ejecutar



__ Github __

https://github.com/NeoTRAN001/SocketsC-/tree/master/First

Comentarios

Entradas más populares de este blog

3# Criptografía - Cifrado por sustitución Atbash

__ Indice __ ¿Qué es Atbash? Proceso de cifrado Proceso de descifrar  Código Github ¿Qué es Atbash? Atbash es un método de cifrado para el alfabeto hebreo, por lo tanto entra en la clasificación de           - Cifrado Clásico - se le conoce también como el método espejo, pues consiste en sustituir en la que la primera letra (A) será sustituida por la última (Z), la segunda por la penúltima (B - Y) y así sucesivamente. Proceso de cifrado Vayamos a probarlo, vamos a cifrar nuestra palabra de costumbre RegularWeb: R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : IVTFOZIDVY A  =  Z R  =  I W =  D E  =  V B  =  Y Proceso de descifrar  Para descifrar es el mismo procedimiento. R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : REGULARWEB A  =  Z R  =  I W =  D E  =  V B  =  Y Código Github   https://github.com/NeoTRAN001/Crypt

2# Criptografía - Polybios

__ Indice __ ¿Qué es Polybios? Proceso de cifrado Proceso de descifrar Código Github __ ¿Qué es Polybios? __ Es un sistema de cifrado en el que se coloca todo el alfabeto en una matriz, y cada letra tiene una posición en la que será convertida.  Es considerado el algoritmo de cifrado más antiguo que se tiene registro •Su nombre se le da por el Historiador griego Polybios • Alrededor del año 150 a. C. __ Proceso de cifrado __ Bien, el proceso de cifrado es bastante fácil, tenemos nuestra matriz bidimensional , si queremos traducir el carácter - ? - nos da como resultado [ 0, 0 ] Y pues, eso es todo... Vayamos a cifrar la palabra Hola H = [4, 9]    o = [1 , 9]    l  = [1, 5]     a = [0, 4]  Resultado: 49191504 __ Proceso de descifrar __  Ahora si queremos el proceso inverso, solamente tenemos, tenemos que mandarle las posiciones y este nos devolverá el carácter [4, 9] = H     [1 , 9] = o    [1, 5] = l    [0