sockets en java
Post on 25-Jul-2015
369 Views
Preview:
TRANSCRIPT
SOCKETS EN JAVA
PROTOCOLO UDP
1
DEFINICIOacuteN CONCEPTO Y ESTRUCTURA
bull UN DATAGRAMA ES UN FRAGMENTO DE PAQUETE (ANAacuteLOGO A UN TELEGRAMA) QUE ES ENVIADO CON LA SUFICIENTE INFORMACIOacuteN PARA QUE LA RED PUEDA SIMPLEMENTE ENCAMINAR EL FRAGMENTO HACIA EL EQUIPO TERMINAL DE DATOS RECEPTOR DE MANERA INDEPENDIENTE A LOS FRAGMENTOS RESTANTES
2
3
Estructura de un datagrama es cabecera y datos
4
Te va todoesto
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
Los datagramas tambieacuten son la agrupacioacuten loacutegica de informacioacuten que se enviacutea como una unidad de capa de red a traveacutes de un medio de transmisioacuten sin establecer con anterioridad un circuito virtual Los datagramas IP son las unidades principales de informacioacuten de Internet
USER DATAGRAM PROTOCOL (UDP)
bull ES UN PROTOCOLO DEL NIVEL DE TRANSPORTE BASADO EN EL INTERCAMBIO DE DATAGRAMAS (PAQUETE DE DATOS)
bull PERMITE EL ENVIacuteO DE DATAGRAMAS A TRAVEacuteS DE LA RED SIN QUE SE HAYA ESTABLECIDO PREVIAMENTE UNA CONEXIOacuteN YA QUE EL PROPIO DATAGRAMA INCORPORA SUFICIENTE INFORMACIOacuteN DE DIRECCIONAMIENTO EN SU CABECERA
bull TAMPOCO TIENE CONFIRMACIOacuteN NI CONTROL DE FLUJO POR LO QUE LOS PAQUETES PUEDEN ADELANTARSE UNOS A OTROS
bull TAMPOCO SE SABE SI HA LLEGADO CORRECTAMENTE YA QUE NO HAY CONFIRMACIOacuteN DE ENTREGA O RECEPCIOacuteN
5
ENRUTAMIENTO
ENRUTAR ES EL PROCESO DE SELECCIOacuteN DE UN CAMINO PARA EL ENVIacuteO DE PAQUETES LA COMPUTADORA QUE HACE ESTO ES LLAMADA ROUTER
6
En general se puede dividir el enrutamiento en Entrega Directa y Entrega Indirecta La Entrega Directa es la transmisioacuten de un Datagrama de una maquina a otra dentro de la misma red fiacutesica La Entrega Indirecta ocurre cuando el destino no estaacute en la red local lo que obliga al Host a enviar el Datagrama a alguacuten Router intermedio
Puertos UDP utiliza puertos para permitir la comunicacioacuten entre aplicaciones El campo de puerto tiene una longitud de 16 bits por lo que el rango de valores vaacutelidos va de 0 a 65535
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
DEFINICIOacuteN CONCEPTO Y ESTRUCTURA
bull UN DATAGRAMA ES UN FRAGMENTO DE PAQUETE (ANAacuteLOGO A UN TELEGRAMA) QUE ES ENVIADO CON LA SUFICIENTE INFORMACIOacuteN PARA QUE LA RED PUEDA SIMPLEMENTE ENCAMINAR EL FRAGMENTO HACIA EL EQUIPO TERMINAL DE DATOS RECEPTOR DE MANERA INDEPENDIENTE A LOS FRAGMENTOS RESTANTES
2
3
Estructura de un datagrama es cabecera y datos
4
Te va todoesto
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
Los datagramas tambieacuten son la agrupacioacuten loacutegica de informacioacuten que se enviacutea como una unidad de capa de red a traveacutes de un medio de transmisioacuten sin establecer con anterioridad un circuito virtual Los datagramas IP son las unidades principales de informacioacuten de Internet
USER DATAGRAM PROTOCOL (UDP)
bull ES UN PROTOCOLO DEL NIVEL DE TRANSPORTE BASADO EN EL INTERCAMBIO DE DATAGRAMAS (PAQUETE DE DATOS)
bull PERMITE EL ENVIacuteO DE DATAGRAMAS A TRAVEacuteS DE LA RED SIN QUE SE HAYA ESTABLECIDO PREVIAMENTE UNA CONEXIOacuteN YA QUE EL PROPIO DATAGRAMA INCORPORA SUFICIENTE INFORMACIOacuteN DE DIRECCIONAMIENTO EN SU CABECERA
bull TAMPOCO TIENE CONFIRMACIOacuteN NI CONTROL DE FLUJO POR LO QUE LOS PAQUETES PUEDEN ADELANTARSE UNOS A OTROS
bull TAMPOCO SE SABE SI HA LLEGADO CORRECTAMENTE YA QUE NO HAY CONFIRMACIOacuteN DE ENTREGA O RECEPCIOacuteN
5
ENRUTAMIENTO
ENRUTAR ES EL PROCESO DE SELECCIOacuteN DE UN CAMINO PARA EL ENVIacuteO DE PAQUETES LA COMPUTADORA QUE HACE ESTO ES LLAMADA ROUTER
6
En general se puede dividir el enrutamiento en Entrega Directa y Entrega Indirecta La Entrega Directa es la transmisioacuten de un Datagrama de una maquina a otra dentro de la misma red fiacutesica La Entrega Indirecta ocurre cuando el destino no estaacute en la red local lo que obliga al Host a enviar el Datagrama a alguacuten Router intermedio
Puertos UDP utiliza puertos para permitir la comunicacioacuten entre aplicaciones El campo de puerto tiene una longitud de 16 bits por lo que el rango de valores vaacutelidos va de 0 a 65535
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
3
Estructura de un datagrama es cabecera y datos
4
Te va todoesto
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
Los datagramas tambieacuten son la agrupacioacuten loacutegica de informacioacuten que se enviacutea como una unidad de capa de red a traveacutes de un medio de transmisioacuten sin establecer con anterioridad un circuito virtual Los datagramas IP son las unidades principales de informacioacuten de Internet
USER DATAGRAM PROTOCOL (UDP)
bull ES UN PROTOCOLO DEL NIVEL DE TRANSPORTE BASADO EN EL INTERCAMBIO DE DATAGRAMAS (PAQUETE DE DATOS)
bull PERMITE EL ENVIacuteO DE DATAGRAMAS A TRAVEacuteS DE LA RED SIN QUE SE HAYA ESTABLECIDO PREVIAMENTE UNA CONEXIOacuteN YA QUE EL PROPIO DATAGRAMA INCORPORA SUFICIENTE INFORMACIOacuteN DE DIRECCIONAMIENTO EN SU CABECERA
bull TAMPOCO TIENE CONFIRMACIOacuteN NI CONTROL DE FLUJO POR LO QUE LOS PAQUETES PUEDEN ADELANTARSE UNOS A OTROS
bull TAMPOCO SE SABE SI HA LLEGADO CORRECTAMENTE YA QUE NO HAY CONFIRMACIOacuteN DE ENTREGA O RECEPCIOacuteN
5
ENRUTAMIENTO
ENRUTAR ES EL PROCESO DE SELECCIOacuteN DE UN CAMINO PARA EL ENVIacuteO DE PAQUETES LA COMPUTADORA QUE HACE ESTO ES LLAMADA ROUTER
6
En general se puede dividir el enrutamiento en Entrega Directa y Entrega Indirecta La Entrega Directa es la transmisioacuten de un Datagrama de una maquina a otra dentro de la misma red fiacutesica La Entrega Indirecta ocurre cuando el destino no estaacute en la red local lo que obliga al Host a enviar el Datagrama a alguacuten Router intermedio
Puertos UDP utiliza puertos para permitir la comunicacioacuten entre aplicaciones El campo de puerto tiene una longitud de 16 bits por lo que el rango de valores vaacutelidos va de 0 a 65535
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
4
Te va todoesto
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
a quieacuten le importa soacutelo enviacutealo lo
maacutes raacutepido
Los datagramas tambieacuten son la agrupacioacuten loacutegica de informacioacuten que se enviacutea como una unidad de capa de red a traveacutes de un medio de transmisioacuten sin establecer con anterioridad un circuito virtual Los datagramas IP son las unidades principales de informacioacuten de Internet
USER DATAGRAM PROTOCOL (UDP)
bull ES UN PROTOCOLO DEL NIVEL DE TRANSPORTE BASADO EN EL INTERCAMBIO DE DATAGRAMAS (PAQUETE DE DATOS)
bull PERMITE EL ENVIacuteO DE DATAGRAMAS A TRAVEacuteS DE LA RED SIN QUE SE HAYA ESTABLECIDO PREVIAMENTE UNA CONEXIOacuteN YA QUE EL PROPIO DATAGRAMA INCORPORA SUFICIENTE INFORMACIOacuteN DE DIRECCIONAMIENTO EN SU CABECERA
bull TAMPOCO TIENE CONFIRMACIOacuteN NI CONTROL DE FLUJO POR LO QUE LOS PAQUETES PUEDEN ADELANTARSE UNOS A OTROS
bull TAMPOCO SE SABE SI HA LLEGADO CORRECTAMENTE YA QUE NO HAY CONFIRMACIOacuteN DE ENTREGA O RECEPCIOacuteN
5
ENRUTAMIENTO
ENRUTAR ES EL PROCESO DE SELECCIOacuteN DE UN CAMINO PARA EL ENVIacuteO DE PAQUETES LA COMPUTADORA QUE HACE ESTO ES LLAMADA ROUTER
6
En general se puede dividir el enrutamiento en Entrega Directa y Entrega Indirecta La Entrega Directa es la transmisioacuten de un Datagrama de una maquina a otra dentro de la misma red fiacutesica La Entrega Indirecta ocurre cuando el destino no estaacute en la red local lo que obliga al Host a enviar el Datagrama a alguacuten Router intermedio
Puertos UDP utiliza puertos para permitir la comunicacioacuten entre aplicaciones El campo de puerto tiene una longitud de 16 bits por lo que el rango de valores vaacutelidos va de 0 a 65535
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
USER DATAGRAM PROTOCOL (UDP)
bull ES UN PROTOCOLO DEL NIVEL DE TRANSPORTE BASADO EN EL INTERCAMBIO DE DATAGRAMAS (PAQUETE DE DATOS)
bull PERMITE EL ENVIacuteO DE DATAGRAMAS A TRAVEacuteS DE LA RED SIN QUE SE HAYA ESTABLECIDO PREVIAMENTE UNA CONEXIOacuteN YA QUE EL PROPIO DATAGRAMA INCORPORA SUFICIENTE INFORMACIOacuteN DE DIRECCIONAMIENTO EN SU CABECERA
bull TAMPOCO TIENE CONFIRMACIOacuteN NI CONTROL DE FLUJO POR LO QUE LOS PAQUETES PUEDEN ADELANTARSE UNOS A OTROS
bull TAMPOCO SE SABE SI HA LLEGADO CORRECTAMENTE YA QUE NO HAY CONFIRMACIOacuteN DE ENTREGA O RECEPCIOacuteN
5
ENRUTAMIENTO
ENRUTAR ES EL PROCESO DE SELECCIOacuteN DE UN CAMINO PARA EL ENVIacuteO DE PAQUETES LA COMPUTADORA QUE HACE ESTO ES LLAMADA ROUTER
6
En general se puede dividir el enrutamiento en Entrega Directa y Entrega Indirecta La Entrega Directa es la transmisioacuten de un Datagrama de una maquina a otra dentro de la misma red fiacutesica La Entrega Indirecta ocurre cuando el destino no estaacute en la red local lo que obliga al Host a enviar el Datagrama a alguacuten Router intermedio
Puertos UDP utiliza puertos para permitir la comunicacioacuten entre aplicaciones El campo de puerto tiene una longitud de 16 bits por lo que el rango de valores vaacutelidos va de 0 a 65535
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
ENRUTAMIENTO
ENRUTAR ES EL PROCESO DE SELECCIOacuteN DE UN CAMINO PARA EL ENVIacuteO DE PAQUETES LA COMPUTADORA QUE HACE ESTO ES LLAMADA ROUTER
6
En general se puede dividir el enrutamiento en Entrega Directa y Entrega Indirecta La Entrega Directa es la transmisioacuten de un Datagrama de una maquina a otra dentro de la misma red fiacutesica La Entrega Indirecta ocurre cuando el destino no estaacute en la red local lo que obliga al Host a enviar el Datagrama a alguacuten Router intermedio
Puertos UDP utiliza puertos para permitir la comunicacioacuten entre aplicaciones El campo de puerto tiene una longitud de 16 bits por lo que el rango de valores vaacutelidos va de 0 a 65535
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
EL PROTOCOLO UDP (USERDATAGRAM PROTOCOL)
ES UN PROTOCOLO NO ORIENTADO A CONEXIOacuteN DE LA CAPA DE TRANSPORTE DEL MODELO TCPIP LO QUE SIGNIFICA QUE NO GARANTIZA NI LA ENTREGA DE PAQUETES NI QUE LOS PAQUETES LLEGUEN EN ORDEN SECUENCIAL DONDE EL CONTROL SOBRE EL DESTINO FINAL DE UN PAQUETE UDP RECAE EN EL EQUIPO QUE LO ENVIacuteA
7
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
UN SOCKET
ES UNA REFERENCIA INDIRECTA A UN PUERTO PARTICULAR USADA POR EL PROCESO RECEPTOR EN LA MAacuteQUINA RECEPTORA
LOS SOCKETS UDP PUEDE RECIBIR DATOS DE MAacuteS DE UN HOST SI HAY VARIAS MAacuteQUINAS ordmDEBE HABER COMUNICACIOacuteN ENTONCES UDP PUEDE SER MAacuteS CONVENIENTE QUE OTROS MECANISMOS COMO TCP
ordm
8
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
COMUNICACIOacuteN BASADA EN DATAGRAMAS
UN DATAGRAMA ES TRANSMITIDO ENTRE PROCESOS CUANDO UN PROCESO LO ENVIacuteA Y OTRO PROCESO LO RECIBE CUALQUIER PROCESO QUE NECESITE ENVIAR O RECIBIR MENSAJES DEBE EN PRIMER LUGAR CREAR UN SOCKET A UNA DIRECCIOacuteN DE HOST Y UN PUERTO LOCAL
UN SERVIDOR ENLAZARAacute ESE SOCKET A UN PUERTO SERVIDOR ndash IDENTIFICANDO AL CLIENTE DE MANERA QUE PUEDAN ENVIAR MENSAJES AL MISMO UN CLIENTE ENLAZA SU SOCKET A CUALQUIER PUERTO LOCAL LIBRE EL MEacuteTODO RECEPTOR DEVUELVE LA HOST Y EL PUERTO DEL EMISOR ADEMAacuteS DEL MENSAJE PERMITIENDO A LOS RECEPTORES ENVIAR UNA RESPUESTA
9
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
10
Las clases Java para establecer comunicaciones mediante datagramas son1javanetDatagramPacket Permite enviar o recibir paquete 2 javanetDatagramSocket Permite crea un socket de datagrama con destino al puerto x
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
MEacuteTODOS
bull INETADDRESS GETADDRESS() - DEVUELVE LA DIRECCIOacuteN IP DESDE QUE UNDATAGRAMPACKET FUE ENVIADO O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) LA DIRECCIOacuteN IP DE DESTINO
bull BYTE [] GETDATA () - DEVUELVE EL CONTENIDO DE LA DATAGRAMPACKET REPRESENTADO COMO UNA MATRIZ DE BYTES
bull INT GETLENGTH INT () - DEVUELVE LA LONGITUD DE LOS DATOS ALMACENADOS EN UN DATAGRAMPACKET ESTO PUEDE SER MENOR QUE EL TAMANtildeO REAL DEL BUacuteFER DE DATOS
bull INT GETPORT () - DEVUELVE EL NUacuteMERO DE PUERTO DESDE DONDE SE ENVIOacute UN DATAGRAMPACKET O (SI EL PAQUETE VA A SER ENVIADO A UNA MAacuteQUINA REMOTA) EL NUacuteMERO DE PUERTO DE DESTINO
bull SETADDRESS (INETADDRESS ADDR) - ASIGNA UNA NUEVA DIRECCIOacuteN DE DESTINO A UN DATAGRAMPACKET
bull SETDATA (BYTE [] BUFFER) - ASIGNA UN BUFFER DE DATOS NUEVOS A LA DATAGRAMPACKET
bull SETLENGTH (INT LENGTH) - ASIGNA UNA NUEVA LONGITUD DE LA DATAGRAMPACKET
bull SETPORT (INT PORT) - ASIGNA UN PUERTO DE DESTINO A UN NUEVO DATAGRAMPACKET
11
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
bull JAVA PROPORCIONA CLASES PARA DAR SOPORTE A LA COMUNICACIOacuteN VIacuteA DATAGRAMAS UDP TODAS ELLAS CONTENIDAS EN EL PAQUETE JAVANET
bull ESTAS CLASES SON
bull DATAGRAMSOCKET
bull DATAGRAMPACKET
12
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
CLASE DATAGRAMSOCKET
bull LA CLASE DATAGRAMSOCKET PROPORCIONA ACCESO A UN SOCKET UDP LO QUE PERMITE QUE LOS PAQUETES UDP PUEDAN SER ENVIADOS Y RECIBIDOS
bull EL MISMO DATAGRAMSOCKET PUEDE SER USADO PARA RECIBIR LOS PAQUETES TANTO COMO PARA ENVIARLOS
13
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
14
bull DatagramSocket() constructor sin argumentos que permite que el sistema elija un puerto entre los que esteacuten libres y selecciona una de las direcciones locales
bull DatagramSocket(int port) constructor que toma un nuacutemero de puerto como argumento apropiado para los procesos que necesitan un nuacutemero de puerto (servicios)
bull DatagramSocket(int port InetAddress laddr) constructor que toma como argumentos el nuacutemero de puerto y una determinada direccioacuten local
DatagramSocket maneja sockets para enviar y recibir datagramas UDP Proporciona tres constructores
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
MEacuteTODOS DE LA CLASE DATAGRAMSOCKET
bull SEND(DATAGRAMPACKET P) Y RECEIVE(DATAGRAMPACKET P) ESTOS MEacuteTODOS SIRVEN PARA TRANSMITIR DATAGRAMAS ENTRE UN PAR DE CONECTORES EL ARGUMENTO DE SEND ES UNA INSTANCIA DE DATAGRAMPACKET CONTENIENDO EL MENSAJE Y EL DESTINO EL ARGUMENTO DE RECEIVE ES UN DATAGRAMPACKET VACIacuteO EN EL QUE COLOCAR EL MENSAJE SU LONGITUD Y SU ORIGEN
bull SETSOTIMEOUT(INT TIMEOUT) ESTE MEacuteTODO PERMITE ESTABLECER UN TIEMPO DE ESPERA LIacuteMITE CUANDO SE FIJA UN LIacuteMITE EL MEacuteTODO RECEIVE SE BLOQUEA DURANTE EL TIEMPO FIJADO Y DESPUEacuteS LANZA UNA EXCEPCIOacuteN INTERRUPTEDIOEXCEPTION
bull CONNECT(INETADDRESS ADDRESS INT PORT) ESTE MEacuteTODO SE UTILIZA PARA CONECTARSE A UN PUERTO REMOTO Y A UNA DIRECCIOacuteN INTERNET CONCRETOS EN CUYO CASO EL CONECTOR SOacuteLO PODRAacute ENVIAR Y RECIBIR MENSAJES DE ESA DIRECCIOacuteN 15
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
ENVIAR Y RECIBIR LOS DATAGRAMPACKET
PARA ENVIAR EL DATAGRAMPACKET DEBEMOS LLAMAR AL MEacuteTODO SEND() DE DATAGRAMSOCKET PASANDO COMO PARAacuteMETRO EL DATAGRAMPACKET QUE ACABAMOS DE CREAR
ENVIAR DATAGRAMPACKET
SOCKETSEND(DATO)
bullPARA RECIBIR IGUAL PERO CON SOCKETRECEIVE()
RECIBIR DATAGRAMPACKET
SOCKETRECEIVE(DATO)
16
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
MEacuteTODOSbull CLOSE() - CIERRA UN SOCKET Y SE DESLIGA DEL PUERTO LOCAL
bull CONNECT (INETADDRESS REMOTE_ADDR REMOTE_PORT INT) ndash RESTRINGE EL ACCESO A LA DIRECCIOacuteN ESPECIFICADA A DISTANCIA Y EL PUERTO
bull DISCONNECT() - DESCONECTA EL DATAGRAMSOCKET
bull INETADDRESS GETINETADDRESS () - DEVUELVE LA DIRECCIOacuteN REMOTA A LA QUE EL SOCKET ESTAacute CONECTADO O NULL SI NO EXISTE NINGUNA TAL CONEXIOacuteN
bull INT GETPORT () - DEVUELVE EL PUERTO REMOTO AL QUE ESTAacute CONECTADO EL SOCKET O -1 SI NO EXISTE DICHA CONEXIOacuteN
bull INETADDRESS GETLOCALADDRESS () - DEVUELVE LA DIRECCIOacuteN LOCAL A LA QUE EL SOCKET ESTA ENLAZADO
bull INT GETLOCALPORT () - DEVUELVE EL PUERTO LOCAL AL QUE ESTAacute ENLAZADO EL CONECTOR
bull INT GETRECEIVEBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION ndash DEVUELVE EL TAMANtildeO MAacuteXIMO DEL BUacuteFER UTILIZADO PARA LOS PAQUETES UDP ENTRANTES
bull INT GETSENDBUFFERSIZE() THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL TAMANtildeO MAacuteXIMO DE BUacuteFER UTILIZADO PARA PAQUETES UDP SALIENTES
bull GETSOTIMEOUT INT () THROWS JAVANETSOCKETEXCEPTION - DEVUELVE EL VALOR DE LA OPCIOacuteN DE CONECTOR DE TIEMPO DE ESPERA ESTE VALOR SE UTILIZA PARA DETERMINAR EL NUacuteMERO DE MILISEGUNDOS QUE UNA OPERACIOacuteN DE LECTURA BLOQUEARA ANTES DE LANZAR UN JAVAIOINTERRUPTEDIOEXCEPTION DE MANERA PREDETERMINADA ESTE VALOR SERAacute IGUAL A CERO LO QUE INDICA QUE EL BLOQUEO DE E S SE UTILIZARAacute
bull RECEIVE (DATAGRAMPACKET PACKET)) THROWS JAVAIOIOEXCEPTION- LEE UN PAQUETE UDP Y ALMACENA EL CONTENIDO EN EL PAQUETE ESPECIFICADO LA DIRECCIOacuteN Y EL PUERTO
17
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
CLASE DATAGRAMPACKET
bull UN DATAGRAMPACKET SE UTILIZA PARA REPRESENTAR UN PAQUETE UDP Y DEBE SER CREADO ANTES DE RECIBIR LOS PAQUETES
bull PROPORCIONAN CONSTRUCTORES PARA CREAR INSTANCIAS A PARTIR DE LOS DATAGRAMAS RECIBIDOS Y PARA CREAR INSTANCIAS DE DATAGRAMAS QUE VAN A SER ENVIADOS
18
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
19
Estos constructores crean una instancia de datagrama compuesta por una cadena de bytes que almacena el mensaje la longitud del mensaje y la direccioacuten de Internet y el nuacutemero de puerto local del conector destino tal y como sigue
1Constructores para datagramas que van a ser enviados
DatagramPacket(byte[] buf int length)
DatagramPacket(byte[] buf int length InetAddress address int port)
DatagramPacket
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
20
2Constructores para datagramas recibido
DatagramPacket(byte[] buf int offset int length)
DatagramPacket(byte[] buf int offset int length InetAddress address int port) Estos constructores nos permiten crear instancias de los datagramas recibidos especificando la cadena de bytes en la que alojar el mensaje la longitud de la misma y el offset dentro de la cadena
Dentro de esta clase hay meacutetodos para obtener los diferentes componentes de un datagrama tanto recibido como enviado
1getData() para obtener el mensaje contenido en el datagrama2getAddress() para obtener la direccioacuten IP3getPort() para obtener el puerto
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
EL FLUJO DEL PROGRAMA EN EL EMISOR Y RECEPTOR
1Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local Colocar la data en una matriz de bytesCrear un paquete de datagramas especificando la matriz de datos y la direccioacuten del receptorInvocar el meacutetodo de enviacuteo del socket con una referencia al paquete de datagramas
1Receptor del programaCrear un socket de datagrama y enlazarlo a un puerto local especiacuteficoCrear una matriz de bytes para la recepcioacuten de los datosCrear un paquete de datagramas especificando la matriz de datosInvocar el meacutetodo de recepcioacuten del socket con una referencia a los paquetes de datagramas 21
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
EJEMPLO DE PROTOCOLO DE DATAGRAMAS DE USUARIO
PARA DEMOSTRAR COacuteMO LOS PAQUETES UDP SE ENVIacuteAN Y RECIBEN VAMOS A COMPILAR Y
EJECUTAR DOS PEQUENtildeOS EJEMPLOS EL PRIMERO SE ENLAZARAacute A UN PUERTO
LOCAL LEERAacute UN PAQUETE Y MOSTRARAacute SU CONTENIDO E INFORMACIOacuteN DE
DIRECCIONAMIENTO EL SEGUNDO EJEMPLO ENVIARAacute EL PAQUETE
LEIacuteDO POR EL PRIMERO22
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
TALLER N 1CLASE RECIBE
23
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
TALLER N 1 CLASE ENVIA
24
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
TALLER GRUPO DE 2 ESTUDIANTES
1 ESCRIBA EL COacuteDIGO DE LOS DOS PROGRAMAS2 COMPILE Y EJECUTE EL COacuteDIGO DEL EJEMPLO EN UNA MAacuteQUINA USANDO
``LOCALHOST COMO NOMBRE DE MAacuteQUINA POR EJEMPLO HOST LOCALHOST PUERTO 3000 MENSAJE HOLA MUNDO
3 EJECUTE LOS DOS PROGRAMAS ARRANCANDO PRIMERO AL RECEPTOR Y DESPUEacuteS AL EMISOR EL MENSAJE QUE SE ENVIacuteE NO DEBERIacuteA EXCEDER LA LONGITUD MAacuteXIMA PERMITIDA QUE ES DE 25 CARACTERES DESCRIBA EL RESULTADO DE LA EJECUCIOacuteN
4 VUELVA A EJECUTAR LAS APLICACIONES ESTA VEZ EJECUTANDO PRIMERO AL ENVIA Y LUEGO AL QUE RECIBE DESCRIBA Y EXPLIQUE EL RESULTADO
5 REPITA EL APARTADO ESTA VEZ MANDANDO UN MENSAJE DE LONGITUD MAacuteS GRANDE QUE LA MAacuteXIMA LONGITUD PERMITIDA DESCRIBA Y EXPLIQUE LA SALIDA PRODUCIDA
6 EN MAacuteQUINAS SEPARADAS EJECUTE SOLAMENTE AL QUE RECIBE Y EN OTRA MAacuteQUINA EJECUTE AL QUE ENVIA DESCRIBA Y EXPLIQUE EL RESULTADO
7 MODIFIQUE EL CODIGO DEL QUE RECIBE PARA QUE MUESTRE LA SIGUIENTE INFORMACIOacuteN
25
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
INDICACIONES DE SEGURIDAD
bull PASOS
bull DESACTIVAR LOS FIREWORKS Y ANTIVIRUS
bull EN AMBAS MAQUINAS LA QUE TRABAJARA COMO CLIENTE Y LA OTRA COMO SERVIDOR INCLUIR ESTE COacuteDIGO EN EL JDK ARCHIVO (JAVAPOLICY)
bull CPROGRAM FILESJAVAJDK170_25JRELIBSECURITY
CAMBIAR ESTOS DATOSPERMISSION JAVANETSOCKETPERMISSION 1024-65535 CONNECTACCEPTLISTENRESOLVE
bull
bull ESTOS PERMITEN TENER ACCESO DESDE OTRO EQUIPO SI TIENE LOCALHOST DEJE EL PUERTO QUE TIENEPERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 PERMISSION JAVANETSOCKETPERMISSION LOCALHOST80 CONNECTACCEPTLISTENRESOLVECONNECTACCEPTLISTENRESOLVE
bull RECORDAR MODIFICARLO EN LOS DOS EQUIPOS 26
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
- Slide 20
- Slide 21
- Slide 22
- Slide 23
- Slide 24
- Slide 25
- Slide 26
-
top related