__ Í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.
Comentarios
Publicar un comentario