lab02 - programacion de sockets en udp.desbloqueado
TRANSCRIPT
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.
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
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
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
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($;
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$;
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
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${
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
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.
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:
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.