Pérez Valencia Ubaldo -...

13
Gines Hinojosa Marisol López López Marcela Pamela Pérez Cruz Juan Carlos Pérez Valencia Ubaldo

Transcript of Pérez Valencia Ubaldo -...

Page 1: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

Gines Hinojosa MarisolLópez López Marcela PamelaPérez Cruz Juan CarlosPérez Valencia Ubaldo

Page 2: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

Lenguaje, desarrollado por Microsoft por un equipo dirigido por Andres Helsberj y Scott Wiltamuth, se diseño en específico para la

plataforma .Net como un lenguaje que permitiera a los programadores migrar con

facilidad hacia .Net. Tiene sus raíces en Java, C y C++; adapta las mejores características de

cada uno de estos lenguajes y agrega características propias.

Page 3: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

C# está orientado a objetos y contiene una poderosa bibiloteca de clases (FCL por sus siglas

en Ingles; FrameWork Class Library), mejor conocida como Biblioteca de Clases de

Framework, que consta de componentes preconstruidos que permiten a los

programadores desarrollar aplicaciones con rapidez, además este lenguaje es apropiado para

desarrollar apliaciones de escritorio (Windows Forms), asi como Smart Clients, Aplicaciones Web (ASP .Net), Aplicaciones Móviles, entre

otras.

Page 4: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

Interfaz normalizado de comunicación entre procesosutilizado inicialmente en la arquitectura TCP/IP.

Es el extremo de una conexión entre procesos deaplicación que se ejecutan en una red TCP/IP. Cadaextremo se direcciona mediante la dirección IP o nombreDNS de la maquina y un número de puerto (entre 1 y65535).Objetivo:Permitir que un proceso pueda enviar o recibir datos a través de la red.

Page 5: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje
Page 6: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

Para indicar que queremos trabajar con sockets, tenemos queagregar la siguientes lineas en el Using:

using System.Net;

using System.Net.Sockets;

Asi le indicamos que trabajaramos con sockets.

Para conseguir la direccion del IP se usa el IPAddress

IPHostEntry ipHostInfo =

Dns.Resolve("host.contoso.com");

IPAddress ipAddress =

ipHostInfo.AddressList[0];

Page 7: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

IPEndPoint Ep =

new IPEndPoint(direccion, puerto);

IPEndPoint Ep =

new IPEndPoint(direc, 12345);

Page 8: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

IPHostEntry ipHostInfo =

Dns.Resolve(Dns.GetHostName());

IPAddress ipAddress =

ipHostInfo.AddressList[0];

IPEndPoint localEndPoint = new

IPEndPoint(ipAddress, 11000);

Crea un IPEndpoint para un servidor combinando la primera dirección IP devuelta por Dns para el equipo host con un número de puerto elegido entre el intervalo de números de puerto registrados.

Page 9: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

Una vez determinado el extremo local, el Socket debeasociarse al extremo mediante el método Bind y sedebe establecer en escucha en el extremo mediante elmétodo Listen. Bind inicia una excepción si lacombinación específica de dirección y puerto ya seestá utilizando.

listener.Bind(localEndPoint);

listener.Listen(100);

Page 10: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

Lo siguiente es crear el socket con lo obtenido hasta ahora. Lo llamaremos así:

Socket socket = new Socket

(AddressFamily.InterNetwork,

SocketType.Stream,

ProtocolType.Tcp);

Page 11: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

INSTRUCCIONES DE ENVÍ O DE DATOS EN SERVIDOR

**Recibimos los datos enviados y lo guardamos en cout:count = handler.Receive(bytes);

**Codificamos a cadena (ya que se envían como bytes)data = System.Text.Encoding.ASCII.GetString(bytes, 0, count);

**Mientras lo recibido no sea exit , hacemos comparación final.if (data != "exit\n")

**Mientras lo recibido no sea exit + Intro se continua el bucle, si recibimos exit + intro, salimos del buclewhile (data != "exit\n");

Page 12: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

**Codificamos de string a byte el siguiente mensaje para que se pueda enviar al NetCat (Cliente)

byte[] msg = System.Text.Encoding.ASCII.GetBytes("\n\nFinalizadaconexion con la aplicacion");

**Enviamos el mensaje al clientehandler.Send(msg);

**"Apagamos" los socketshandler.Shutdown(SocketShutdown.Both);

**Cerramos conexiónhandler.Close();

Page 13: Pérez Valencia Ubaldo - profesores.fi-b.unam.mxprofesores.fi-b.unam.mx/yasmine/expo/Sockets_en_c_#.pdfWiltamuth, se diseño en específico para la plataforma .Net como un lenguaje

CONEXIÓN CON EL CLIENTE

**Conectamostry

{socket.Connect(Ep);

**Recibimos la respuesta en bloques de 255 bytesbytes=socket.Receive(RecvBytes,RecvBytes.Length,SocketFlags.None);

**Codificamos la respuestarespuesta = Encoding.ASCII.GetString(RecvBytes, 0, bytes);

**Si durante el procedimiento hay error salta aqui.catch (Exception error)

**Leer consolaConsole.Read();