Lab02 - Programacion de Sockets en UDP.desbloqueado

12
1 - Leunam UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO Departamento A cadémico de Informática REDES Y TELECOMUNICACIONES Lab 02: Programación de Sockets en UDP Ingº Manuel Peñaloza igueroa “Dime y lo olvidaré. Muéstrame y lo recordaré. Involúcrame y lo entenderé” Proverbio chino 1. OBJETIVOS: 1.1 Entender lo básico de la comunicación por r edes. 1.2 Pr ogr amar aplic aciones de r ed usando sockets. 1.3 Apr ender como constr uir aplic aciones cliente/servi dor que s e comunican usando sockets 1.4 Apr end er e l us o de soc ke ts e n ava. 2. BASE TEORICA COMPLENT ARIA UDP: User Datagram Protocol ! El pro toco lo "#P es tipula c omunicac ión que no es tá gara nti$ada entre 2 aplicaciones en la red. o "#P no está basada en la cone%ión como &'P. o (ás bien) env*a pa quetes de datos independientes) llamados datagramas) desde una aplicación a otra. o Enviar datagramas es mu+ parecido a enviar una carta a trav,s del servicio postal- el orden de entrega no es importante + no está garanti$ado) + cada mensae es independiente de cualquier otro. ! Eemplo 1- un servidor de relo que env*a la ora actual a su cliente cuando le es solicitado acer as*. o 0i el cliente pierde un paquete) realmente no tiene sentido reenviarlo por que la ora será incorrecta cuando el cliente lo reciba en el segundo intento. o 0i el cliente ace 2 peticiones + recibe paquetes desde el servidor uera de orden) realmente no importa porq ue el cliente puede ente nder que los pa quetes es n u er a de orden + acer otra petición. ! Eemplo 2- comando ping) servicio que no necesita la gara nt*a de un canal conable. o El propósito del comando ping es testear la comunicación entre 2 programas sobre la red. o #e eco) ping necesita saber acerca de los paquetes ca*dos ó uera de orden para determinar cuan buena ó mala es la cone%ión.

Transcript of Lab02 - Programacion de Sockets en UDP.desbloqueado

Page 1: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 1/12

1 - Leunam

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

Departamento Académico de Informática

REDES Y TELECOMUNICACIONES

Lab 02: Programación de Sockets en UDP

Ingº Manuel Peñaloza igueroa

“Dime y lo olvidaré. Muéstrame y lo recordaré. Involúcrame y loentenderé”

Proverbio chino

1. OBJETIVOS:

1.1 Entender lo básico de la comunicación por redes.1.2 Programar aplicaciones de red usando sockets.1.3 Aprender como construir aplicaciones cliente/servidor que se comunican

usando sockets1.4 Aprender el uso de sockets en ava.

2. BASE TEORICA COMPLENTARIA

UDP: User Datagram Protocol

! El protocolo "#P estipula comunicación que no está garanti$ada entre 2aplicaciones en la red.

o "#P no está basada en la cone%ión como &'P.o (ás bien) env*a paquetes de datos independientes) llamados

datagramas) desde una aplicación a otra.o Enviar datagramas es mu+ parecido a enviar una carta a trav,s del

servicio postal- el orden de entrega no es importante + no estágaranti$ado) + cada mensae es independiente de cualquier otro.

! Eemplo 1- un servidor de relo que env*a la ora actual a su cliente cuandole es solicitado acer as*.

o 0i el cliente pierde un paquete) realmente no tiene sentidoreenviarlo por que la ora será incorrecta cuando el cliente lo recibaen el segundo intento.

o 0i el cliente ace 2 peticiones + recibe paquetes desde el servidoruera de orden) realmente no importa porque el cliente puedeentender que los paquetes están uera de orden + acer otrapetición.

! Eemplo 2- comando ping) servicio que no necesita la garant*a de un canalconable.

o El propósito del comando ping es testear la comunicación entre 2programas sobre la red.

o #e eco) ping necesita saber acerca de los paquetes ca*dos óuera de orden para determinar cuan buena ó mala es la cone%ión.

Page 2: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 2/12

tagrama:n datagrama es un mensae independiente) auto!contenido enviado sobre la red cu+o arribo) ora de lle

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCOREDES Y TELECOMUNICACIONES

Lab 02: Programación de Sockets en UDP

2 -

! En una comunicación basado!en!datagrama tal como "#P) el paquetedatagrama contiene el nmero de puerto de su destino + "#P encamina elpaquete a la aplicación apropiada.

! Algunas aplicaciones que se escriben para comunicarse sobre la red norequerirán el canal conable) punto!a!punto prove*do por &'P.

o (as bien) estas aplicaciones podr*an beneciarse de un modo decomunicación que entrega paquetes de inormación independientes

cu+o arribo + orden de arribo no están garanti$ados.! El protocolo "#P provee un modo de comunicación de red por medio del

cual las aplicaciones env*an paquetes de datos) llamados datagramas unoal otro.

! 5as aplicaciones q6 se comunican v*a datagramas env*an + recibenpaquetes de inormación completamente independientes.

o Estos clientes + servidores no tienen + no necesitan un canal punto!a!punto dedicado.

o 5a entrega de datagramas a sus destinos no está garanti$ado)tampoco está el orden de su arribo.

! "#P- no orientado a cone%ión entre cliente + servidoro 7o andsakingo El emisor e%pl*citamente liga dirección 8P + puerto de destino a cada

paquete

o El servidor debe de e%traer dirección 8P) puerto del emisor desde elpaquete recibido

Page 3: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 3/12

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCOREDES Y TELECOMUNICACIONES

Lab 02: Programación de Sockets en UDP

3 -

! "#P- datos transmitidos puede ser recibidos uera de orden) ó ser perdidos! "#P provee transerencia no confable de grupos de b+tes 9datagramas:

entre el cliente + el servidor

Page 4: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 4/12

3. RECURSOS

5os recursos a utili$ar en el trabao de laboratorio son-

3.1 ava

4. DESARROLLO DE LA PRACTICA:

En el presente trabao de laboratorio se implementará en "#P tanto un cliente

que env*a datos en minscula a un servidor) como un servidor que recibe

datos en minscula desde un cliente + lo devuelve de regreso pero en

ma+sculas aciendo uso del lenguae ava.

4.1 Escribir una aplicación cliente/servidor que implemente el servicio;'A(<8A= #A&>0 ?"E E0&A7 E7 (87"0'"5A0 A (A@"0'"5A0.

! Eemplo- aplicación cliente!servidor-

INTERACCIÓN CLIENTE/SERVIDOR en UDP:

! ava- 'liente "#P

Page 5: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 5/12

Figura: ClienteUDP tiene un stream; el socket acepta paquetes desde el proceso y entrega paquetes al proceso.

APLICACIÓN CLIENTE:

ClienteUDP.java/*

*/

import java.io.*;import java.net.*;

class ClienteUDP {

 public static void main(trin! ar!s"#$ t%ro&s 'ception

{

// crear un stream de entrada para la entrada desde el usuario

)uered+eader inDesdeUsuario ,

ne& )uered+eader(ne& nputtream+eader(stem.in$$;

// crear socet clienteData!ramocet socetCliente , ne& Data!ramocet($;

Page 6: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 6/12

// crear variable0 direccionP (del servidor$

// (traducir nombreost a direccion P (usando D2$$

net3ddress direccionP , net3ddress.!et)2ame(4id5ervidor4$;

Page 7: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 7/12

// otras variables

 bte"# data'nviar , ne& bte"1678#;

 bte"# data+ecibir , ne& bte"1678#;

// leer entrada

trin! sentencia , inDesdeUsuario.readLine($;

data'nviar , sentencia.!et)tes($;

// crear data!rama a enviar con0 data'nviar9 lon!itud9 direccion P puerto

Data!ramPacet pa:uete'nviar ,

ne& Data!ramPacet(data'nviar9 data'nviar.len!t%9 direccionP9 <=>$;

// enviar data!rama al server

socetCliente.send(pa:uete'nviar$;

// crear data!rama para recibir

Data!ramPacet pa:uete+ecibir ,

ne& Data!ramPacet(data+ecibir9 data+ecibir.len!t%$;

// leer data!rama de replica del server

socetCliente.receive(pa:uete+ecibir$;

// car!ar variable sentenciaModificada desde el pa:uete recibido

trin! sentencia?odiicada , ne& trin!(pa:uete+ecibir.!etData($$;

// mostrar en el monitor 

stem.out.println(4D'D' 'L '+@'+04 A sentencia?odiicada$;

// cerrar

socetCliente.close($;

B

B

! ava- 0ervidor "#P

Page 8: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 8/12

Figura: ServidorUDP no tiene streams; el socket acepta paquetes desde el

 proceso y entrega paquetes al proceso.

APLICACIÓN SERVIDOR:ServidorUDP.java/*

*/

import java.io.*;

import java.net.*;

class ervidorUDP {

 public static void main(trin! ar!s"#$ t%ro&s 'ception

{

// crear socet servidor (UDP$ en puerto <=>

Data!ramocet socetervidor , ne& Data!ramocet(<=>$;

// otras variables

 bte"# data+ecibir , ne& bte"1678#;

 bte"# data'nviar , ne& bte"1678#;

&%ile(true${

Page 9: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 9/12

// crear data!rama de recepcin

Data!ramPacet pa:uete+ecibir ,

ne& Data!ramPacet(data+ecibir9 data+ecibir.len!t%$;

// recibir data!rama

Page 10: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 10/12

socetervidor.receive(pa:uete+ecibir$;

//

trin! sentencia , ne& trin!(pa:uete+ecibir.!etData($$;

// obtener direccion P del cliente

net3ddress direccionP , pa:uete+ecibir.!et3ddress($;

// obtener puerto del cliente

int puerto , pa:uete+ecibir.!etPort($;

//

trin! sentencia'n?a , sentencia.toUpperCase($;

data'nviar , sentencia'n?a.!et)tes($;

// crear data!rama a enviar al cliente

Data!ramPacet pa:uete'nviar ,

ne& Data!ramPacet(data'nviar9 data'nviar.len!t%9 direccionP9 puerto$;

// escribir data!rama de salida al socet (enviar data!rama al cliente$

socetervidor.send(pa:uete'nviar$;

B

B

B

! En BindoCs abrir 2 ventanas #>0) e ir a cada directorio donde seencuentra el programa uente.

! 0i necesario) en ambas ventanas) establecer la ruta al compilador + alint,rprete de ava

0E& PA&DFPA&DFG'-HArc/ivos deprogramaHavaHdk1.I.JHbin ó0E& PA&DFPA&DFG'-HArc/ivos de programaHavaHdk1.I.JK1LHbin

9el directorio e%acto var*a segn que versión de ava está instalado:

! En cada ventana) compilar el correspondiente arcivo de ava

 avac 'liente"#P.ava avac 0ervidor"#P.ava

! En la ventana del servidor eecutar la aplicación servidor

 ava 0ervidor"#P

! En la ventana del cliente eecutar la aplicación cliente.

Page 11: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 11/12

 ava 'liente"#P

9tipear un te%to en minsculas + presionar Enter:

Page 12: Lab02 - Programacion de Sockets en UDP.desbloqueado

8/16/2019 Lab02 - Programacion de Sockets en UDP.desbloqueado

http://slidepdf.com/reader/full/lab02-programacion-de-sockets-en-udpdesbloqueado 12/12

! 9comentarios: M

5. CONTROL:

 &=A<A>0 #E 5A<>=A&>=8>.

N.1 0i "d. uese a enviar arcivos desde un ost a otros ost) Oqu, protocoloutili$ar*a &'P ó "#P OPor qu,-

N.2 8mplemente en ava una aplicación cliente/servidor en la que se puedaenviar desde el ost cliente un arcivo de cualquier tipo ó e%tensión aotro ost servidor. 7ota- se probará con arcivos de dierente tamaQo)de preerencia con arcivos de muc/*simos b+tes.5as soluciones grácas tendrán ma+or ponderación 9que se puedaseQalar el arcivo a subir) que se pueda indicar el R8P del servidor)M:Fecha de presentación y entrega: siguiente laboratorio.

N.3 O0u implementación permite la transerencia de arcivos de cualquiertamaQo 0i la respuesta uera 7>) indicar el orden del tamaQo má%imodel arcivo a enviar.

7ota- limitaciones en el tamaQo del arcivo a transerir) implicará unaponderación menor.