0% encontró este documento útil (0 votos)
51 vistas4 páginas

Socket en Csharp

Este documento explica los conceptos básicos de los sockets para la comunicación entre programas. Describe cómo crear sockets, establecer una dirección IP y un puerto, implementar un servidor que escuche conexiones entrantes y un cliente que se conecte al servidor. El servidor queda en espera de conexiones mientras que el cliente inicia la conexión.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
51 vistas4 páginas

Socket en Csharp

Este documento explica los conceptos básicos de los sockets para la comunicación entre programas. Describe cómo crear sockets, establecer una dirección IP y un puerto, implementar un servidor que escuche conexiones entrantes y un cliente que se conecte al servidor. El servidor queda en espera de conexiones mientras que el cliente inicia la conexión.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Buenas a todos en este tutorial voy a tratar de explicar las nociones bsicas sobre

sockets, ejemplos bsicos, teora, etc. Todo esto adquirido por practicas/errores propios
jaja, Lo malo es que soy novato en esto, as que si ven errores o males usos no duden en
corregirme, As que empecemos!!
Los sockets sirven para la comunicacin entre programas (en una primera medida), y
para comenzar a dialogar debemos crear dicho Socket.
1-Agregamos los siguientes Namespaces
1
2

System.Net;
System.Net.Sockets;

2-Una vez agregados, procedemos a crearlos de la siguiente manera:


1

Socket nombre_de_socket = new Socket(AddressFamily, SocketType,


ProtocolType);

Socket -> Nombre de la clase


nombre_de_socket -> El nombre que quieras ponerle
AddressFamily -> Indica el servicio de direcciones que el socket debe usar
SocketType ->Especifica el tipo de socket
ProtocolType -> Indica el tipo de protocolo a usar
Nosotros por el momento lo usaremos as:
Socket miPrimerSocket = new
1 Socket(AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp);

3-Luego necesitamos una direccin ip y un puerto para realizar la conexin, para


ello contamos con una clase llamada IPEndPoint
1 IPEndPoint direccion = new IPEndPoint(IPAddress.Parse(ip),puerto);

ip -> Se pone entre comillas, por ejemplo, 192.168.0.1


puerto -> Se pone directamente (sin comillas), por ejemplo, 1234
Nos quedara as
1

IPEndPoint direccion = new


IPEndPoint(IPAddress.Parse("192.168.0.1"),1234);

4-Listo ahora crearemos un servidor, por el momento ser con aplicaciones de


consola
Realizamos los 3 primeros items, y ahora tendremos que asociar el socket con la
direccion, usando el metodo Bind
1 miPrimerSocket.Bind(direccion);

2 //cabe destacar que la direccin es la propia del servidor

Luego lo debemos poner a la escucha con el mtodo Listen


1 miPrimerSocket.Listen(numero)
// numero -> es la longitud mxima de la cola de conecciones, por el
2
momento pondremos 1

5-Ahora debemos Crear un segundo Socket para comenzar a interactuar


1 Socket OtroNombre = miPrimerSocket.Accept();
2 // Ac debemos usar el anterior Socket

Listo una vez echo esto, la aplicacin queda suspendida hasta que el cliente se conecta.
Esto se debe a que es un Servidor Sincrnico.
Hay dos modos: sincrnicos y asincrnicos, el primero ya est explicado y el segundo
caso no queda suspendido. Pero por el momento seguiremos con el sincrnico, ya que es
ms fcil de enterder.
6-Ahora crearemos un cliente
Realizamos los 3 primeros pasos, pero en la direccin debemos poner la del servidor, y
el mismo puerto
7-Conectaremos el socket
1

miPrimerSocket.Connect(direccion);

Y listo, ahora las aplicaciones estarn conectadas. Obviamente con esto solamente no
sirve de nada, pero en los prximos tutoriales veremos como pasar texto, fotos,
archivos, etc.
Algo a tener en cuenta ahora es que primero debe ejecutarse el servidor, pero solo por
ahora, ms adelante, como dije antes, se ir acomplejando y haciendo ms tiles los
ejemplos!
Y por si alguno no entendi que hacen estas dos aplicaciones, les digo que solo se
conectan y nada ms. Es solo una introduccin.
Muchas Gracias y les dejo los cdigos:
Servidor
01
02
03
04
05
06
07
08

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
//
using System.Net.Sockets;
//

Paso 1
Paso 1

09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

tema

namespace Servidor
{
class Program
{
static void Main(string[] args)
{
Conectar(); //Llamar a funcin Conectar, es ajeno al
}

public static void Conectar()


{
Socket miPrimerSocket = new
Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
// paso 2 - creamos el socket
IPEndPoint miDireccion = new IPEndPoint(IPAddress.Any,
1234);
//paso 3 -IPAddress.Any significa que va a escuchar al
cliente en toda la red
try
{
// paso 4
miPrimerSocket.Bind(miDireccion); // Asociamos el
socket a miDireccion
miPrimerSocket.Listen(1); // Lo ponemos a escucha
Console.WriteLine("Escuchando...");
Socket Escuchar = miPrimerSocket.Accept();
//creamos el nuevo socket, para comenzar a trabajar
con l

//La aplicacin queda en reposo hasta que el socket


se conecte a el cliente
33
//Una vez conectado, la aplicacin sigue su camino
34
Console.WriteLine("Conectado con exito");
35
/*Aca ponemos todo lo que queramos hacer con el
36
socket, osea antes de
37
cerrarlo je*/
38
miPrimerSocket.Close(); //Luego lo cerramos
39
40
}
41
catch (Exception error)
42
{
43
Console.WriteLine("Error: {0}", error.ToString());
44
}
Console.WriteLine("Presione cualquier tecla para
45
terminar");
46
Console.ReadLine();
47
48
}
49
}
50
}
32

cliente

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
//
Paso 1
using System.Net.Sockets;
//
Paso 1
namespace Cliente
{
class Program
{
static void Main(string[] args)
{
Conectar();
}
public static void Conectar()
{
Socket miPrimerSocket = new
Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
// paso 2 - creamos el socket
IPEndPoint miDireccion = new
IPEndPoint(IPAddress.Parse("192.168.0.11"), 1234);
//paso 3 - Ac debemos poner la Ip del servidor, y el
puerto de escucha del servidor
//Yo puse esa porque corr las dos aplicaciones en la
misma pc
try
{
miPrimerSocket.Connect(miDireccion); //
Conectamos
Console.WriteLine("Conectado con exito");
miPrimerSocket.Close();
}
catch (Exception error)
{
Console.WriteLine("Error: {0}",error.ToString());
}
Console.WriteLine("Presione cualquier tecla para
terminar");
Console.ReadLine();
}
}
}

También podría gustarte