diapositivas para socket
TRANSCRIPT
![Page 1: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/1.jpg)
Conectividad en Java
IV
![Page 2: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/2.jpg)
TCP/IP e InternetTCP/IP e Internet
IV.2
![Page 3: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/3.jpg)
URLs
Protocolo
Archivo
Host/Computadora
Cada pieza de información en la
Web tiene una dirección de
identificación única llamada URL
(Uniform Resource Locator).
Ejemplo:
http://mx.geocities.com/progiii_rrl/page7.htm
![Page 4: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/4.jpg)
Elementos del URL
•Protocolo: Especifica como será accesada la información.
•Host: Es la máquina (nodo) origen de la información.
•File: Es el archivo que se requiere.
![Page 5: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/5.jpg)
Interacción Navegador-HTTPD
host java.sun.com
Aplicación
de HTTPD Disco
Navegador
usuario solicita
http:// java.sun.com /index.html
Solicita /index.html
Envía el contenido
de index.html
![Page 6: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/6.jpg)
Protocolo
9 344101
“Si conoce la extensión, capturela”
5
“Conectando a la extensión solicitada”
Un protocolo es un conjunto de reglas que definen el tipo de
comunicación:
![Page 7: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/7.jpg)
Comunicación entre computadoras
Es un proceso muy complicado
Demasiados detalles:� Hardware
� señales
� voltajes
� cables
� etc.
� Software:� Programas
� Protocolos
� Aplicaciones
� etc.
![Page 8: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/8.jpg)
Base de trabajo en red
La comunicación en
red es complicada, por
lo que el trabajo se
divide
Las funciones de red se dividen
en capas. Cada función tiene
asociado un protocolo
Ethernet, Token-Ring, ...
Enlace
IPRed
TCP, UDPTransporte
HTTP, FTP, Telnet, ...Aplicación
Capa Protocolo
TCP/IP es el conjunto de protocolos
para comunicación por internet:
![Page 9: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/9.jpg)
Modelo de Capas
Ejemplo: envío de una carta1. El jefe pide a su secretaria que transcriba y
envíe una carta de felicitación de aniversario a su esposa. Asume que la esposa recibirá la carta (Aplicación)
2. La secretaria la transcribe y la pone en un sobre. Debe estar pendiente de que la esposa la reciba. La entrega al mensajero. (Transporte)
3. El mensajero la deposita en el buzón de salida. No se preocupa de verificar que la esposa haya recibido la carta. (Red)
4. El servicio postal se encarga de transportar la carta y ponerla en el buzón de la esposa. No se preocupa si la esposa la recibió o nó. (Enlace)
![Page 10: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/10.jpg)
Capa de RedTodo host conectado a la Internet tiene asociado una
dirección IP (135.17.98.240).
Adicionalmente, toda computadora tiene una dirección local
(127.0.0.1) conocido como el localhost
Se puede asociar a cada host un
nombre de host (hostname), por
ejemplo java.sun.com
127.0.0.1
localhost
135.17.98.250
![Page 11: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/11.jpg)
Capa de transporte
Todas las capas son importantes, pero la capa de
transporte es la que asegura la entrega de la información
entre hosts
La información que viaja en internet
se divide en paquetes de longitud
pequeña, que utilizan la red para
viajar
![Page 12: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/12.jpg)
Puertos
Cada host en Internet puede ofrecer varios servicios
(internet, copia de archivos, correo) a través de los
diferentes protocolos existentes.
Los involucrados deben saber de antemano que tipo de
servicio se utilizará.
Un puerto es una abstracción de
software que se asocia a cada típo de
servicio.
Un puerto es un número de 16 bits
que identifica a cada servicio ofrecido
por un host (un servidor)
![Page 13: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/13.jpg)
Puertos
Cada destino en Internet es identificado por un host
(dirección IP de 32 bits) y un puerto (16 bits).
¿por qué no se especifica un
puerto al usar un navegador?
80252321
HTTP (Transferencia de Hipertexto)CorreoTelnet (conexión remota)FTP (Transferencia de archivos)
PuertoProtocolo
![Page 14: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/14.jpg)
Trabajando con redesTrabajando con redes
IV.2
![Page 15: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/15.jpg)
El paquete java.net
El paquete java.net proporciona clases
base para trabajar con redes
Contiene clases que admiten la
comunicación cliente/servidor basada
en sockets
Proporciona clases para manejar
direcciones IP y URL
![Page 16: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/16.jpg)
Paquete java.netObjectObject
ServerSocketServerSocket
SocketSocket
InetAddressInetAddress
DatagramPacketDatagramPacket
DatagramSocketDatagramSocket
URLURL
Para cliente/servidor
orientado a conexión
Para cliente/servidor
sin conexión
Para información de
una dirección IP
Para localizar
recursos en Internet
![Page 17: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/17.jpg)
Direcciones IPDirecciones IP
IV.2
![Page 18: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/18.jpg)
Clase InetAddress
Devuelve el nombre de la máquina (host)
getHostName()
Devuelve la dirección IP del host
getHostAddress()
Devuelve un objeto InetAddress asociado al nombre del host
getByName(String)
Devuelve un objeto InetAddress de la máquina local
getLocalHost()
DescripciónMétodo
La clase InetAddress representa las direcciones del
protocolo IP
![Page 19: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/19.jpg)
Ejemploimport java.net.*;public class DireccionIP {public static void main(String[] args) {try {InetAddress host=InetAddress.getByName("www.itver.edu.mx");System.out.println("Host="+host);System.out.println("IP="+host.getHostAddress());System.out.println("Nombre="+host.getHostName());System.out.println(
"Localhost="+InetAddress.getLocalHost());}catch(UnknownHostException ex){System.err.println("Host desconocido");System.exit(0);}}}
import java.net.*;public class DireccionIP {public static void main(String[] args) {try {InetAddress host=InetAddress.getByName("www.itver.edu.mx");System.out.println("Host="+host);System.out.println("IP="+host.getHostAddress());System.out.println("Nombre="+host.getHostName());System.out.println(
"Localhost="+InetAddress.getLocalHost());}catch(UnknownHostException ex){System.err.println("Host desconocido");System.exit(0);}}}
Devuelve un objeto
asociado al nombre del
host
El nombre del
host
La IP del host
Devuelve un objeto
asociado al localhost
![Page 20: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/20.jpg)
Ejemploimport java.net.*;public class DireccionIP {public static void main(String[] args) {try {InetAddress host=InetAddress.getByName("www.itver.edu.mx");System.out.println("Host="+host);System.out.println("IP="+host.getHostAddress());System.out.println("Nombre="+host.getHostName());System.out.println(
"Localhost="+InetAdress.getLocalHost());}catch(UnknownHostException ex){System.err.println("Host desconocido");System.exit(0);}}}
import java.net.*;public class DireccionIP {public static void main(String[] args) {try {InetAddress host=InetAddress.getByName("www.itver.edu.mx");System.out.println("Host="+host);System.out.println("IP="+host.getHostAddress());System.out.println("Nombre="+host.getHostName());System.out.println(
"Localhost="+InetAdress.getLocalHost());}catch(UnknownHostException ex){System.err.println("Host desconocido");System.exit(0);}}}
SALIDA:Host : www.itver.edu.mx/148.208.233.80IP : 148.208.233.80Nombre : www.itver.edu.mxLocalhost: Proy-Inv/10.10.200.103
![Page 21: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/21.jpg)
Recursos de la WebRecursos de la Web
IV.2
![Page 22: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/22.jpg)
Clase URL
La clase URL representa una Uniform Resource Locator,
un apuntador a un recurso en la Web.
Un recurso puede ser algo tan simple como un archivo o
un directorio, o puede ser una referencia a un objeto más
complejo (una consulta a una base de datos, un motor de
búsqueda)
![Page 23: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/23.jpg)
Lectura desde un URL
URL.openStream()
InputStreamReader
Maneja bytes como caracteres
BufferedReader
readLine()
Contenido de
una página
Filtro
Abrir flujo de bytes
![Page 24: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/24.jpg)
Ejemploimport java.io.*;import java.net.*;public class ManejoURL {public static void main(String[] args){try {URL url = new URL("http://mx.geocities.com/hector_andrade");
InputStreamReader flujo = new InputStreamReader(url.openStream());
BufferedReader filtro = new BufferedReader(flujo);String linea;while ((linea=filtro.readLine())!=null) {System.out.println(linea);
}filtro.close();}catch (MalformedURLException ex){...}catch (IOException ex) {...}}}
import java.io.*;import java.net.*;public class ManejoURL {public static void main(String[] args){try {URL url = new URL("http://mx.geocities.com/hector_andrade");
InputStreamReader flujo = new InputStreamReader(url.openStream());
BufferedReader filtro = new BufferedReader(flujo);String linea;while ((linea=filtro.readLine())!=null) {System.out.println(linea);
}filtro.close();}catch (MalformedURLException ex){...}catch (IOException ex) {...}}}
Asocia un objeto a
un recurso Web
openStream abre un flujo de
bytes.
InputStreamReader cambia
bytes por caracteres.
BufferedReader permite leer
Strings
![Page 25: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/25.jpg)
Ejemplo
SALIDA:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta name="Generator" content="Microsoft Publisher 2000"><title>Programación III</title></head><body bgcolor="#ffffff" link="#cc6600" vlink="#808000" text="#000000" background="back.gif" topmargin=0 leftmargin=0><a name=top></a>
<table border=0
![Page 26: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/26.jpg)
Cliente / ServidorCliente / Servidor
IV.2
![Page 27: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/27.jpg)
Cliente/servidor
Un cliente necesita algún tipo de información
Un servidor tiene información que puede
proporcionar.
Típicamente, un cliente se conecta a
un servidor y solicita cierta
información.
El servidor busca la información y
entonces la regresa al cliente.
![Page 28: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/28.jpg)
Modelo Cliente/Servidor
64.208.34.100
www.google.com
193.6.124.88
200.17.77.12
puerto 80
Aplicación del
servidor
Aplicación
del cliente
Aplicación
del cliente
![Page 29: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/29.jpg)
Cliente / Servidor• Un cliente
- Inicia la conexión
- Recupera datos
- Despliega datos
- Responde a la entradas
del usuario
- Solicita más datos
• Ejemplos: Navegador,Chat
•Un servidor:
-Responde a la conexión
-Recibe la solicitud por
datos
-Busca los datos
-Los libera
•Ejemplos:
Web Server, Database
Server, Domain Name
Server, Mail Server …
![Page 30: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/30.jpg)
Cliente / Servidor
Se puede implementar un
esquema cliente servidor
con el protocolo TCP:
Utilizando las clases
ServerSocket y SocketO se puede implementar
con el protocolo UDP:
Utilizando las clases
DatagramPacket y
DatagramSocket
![Page 31: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/31.jpg)
Sockets TCPSockets TCP
IV.2
![Page 32: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/32.jpg)
Sockets
Un socket es un punto final de un enlace de dos vías entre
dos programas ejecutándose en la red.
Los sockets se utilizan para comunicarse a través de puertos.
Un socket es un canal de comunicación que permite trasferir
datos entre un puerto.
Un socket se asocia a un puerto.
Cliente: Utilizando la clase Socket.
Servidor: Utilizando la clase ServerSocket
![Page 33: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/33.jpg)
Usando un socket TCPUn cliente:
1. Abre un socket
2. Abre flujos de entrada y
salida para el socket
3. Lee y escribe en los flujos
de acuerdo con los
protocolos del cliente
4. Cierra los flujos
5. Cierra el socket
Un servidor:
1. Abre un socket
2. Acepta (espera) una
conexión
3. Abre los flujos de entrada y
salida del socket
4. Lee y escribe en los flujos
de acuerdo a los procolos
del servidor.
5. Cierra los flujos
6. Cierra el socket
![Page 34: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/34.jpg)
Clase ServerSocket (servidor)
ServerSocket(int port)
Crea un socket en el servidor en un puerto específico. Un puerto 0 crea un socket sobre un puerto libre.
Regresa el puerto en el cual el socket está asociado.
getLocalPort()
Regresa la dirección IP local del servidor.
getInetAddress()
Cierra el socketclose()
Acepta una conexión a este socket.
accept()
DescripciónMétodo
![Page 35: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/35.jpg)
Clase Socket (cliente)Socket()
Socket(InetAddress address, int port);
Socket(String host, int port);
Crea un socket en el cliente
Consigue el flujo de bytes de salida del socket
getOutputStream()
Consigue el flujo de bytes de entrada del socket
getInputStream()
DescripciónMétodo
![Page 36: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/36.jpg)
Ejemplo para Servidor
import java.net.*;import java.io.*;public class ServidorTCP {public static void main(String[] args) {int port = 2882;String cadena = "Mensaje del servidor";ServerSocket server = null;try {server = new ServerSocket(port);...
} catch (IOException ioe){...}
import java.net.*;import java.io.*;public class ServidorTCP {public static void main(String[] args) {int port = 2882;String cadena = "Mensaje del servidor";ServerSocket server = null;try {server = new ServerSocket(port);...
} catch (IOException ioe){...}
Crea el
socket en el
puerto (port)
Servidor
Puerto
Socket Un servidor puede atender
varios clientes en un
puerto, abriendo varios
sockets
![Page 37: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/37.jpg)
Ejemplo para Servidor
try {Socket conexion = server.accept();InputStream flujoBE = conexion.getInputStream();Reader flujoCE = new InputStreamReader(flujoBE);BufferedReader reader = new BufferedReader(flujoCE);...
Espera a un cliente y
acepta la conexión
Abre flujos
Servidor Cliente
conexion.getInputStream()Flujo de bytes del cliente
InputStreamReaderManeja un flujo de bytes como flujo de caracteres
BufferedReaderFiltro para leer Strings
![Page 38: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/38.jpg)
Ejemplo para Servidor...OutputStream flujoBS = conexion.getOutputStream();Writer flujoCS = new OutputStreamWriter(flujoBS);BufferedWriter writer = new BufferedWriter(flujoCS);...
Abre flujos
Servidor Cliente
conexion.getOutputStream()Flujo de bytes del cliente
InputStreamWriterManeja un flujo de caracteres como flujo de bytes
BufferedWriterFiltro para pasar
Strings como caracteres
![Page 39: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/39.jpg)
Ejemplo para Servidor...System.out.println("El cliente es "+reader.readLine());writer.write("Conectado a"+conexion.getInetAddress());writer.flush();for(int i=0;i<cadena.length();i++){writer.write(cadena.substring(0,cadena.length()-i));writer.flush();}reader.close();writer.close();conexion.close();
Lee del
clienteEnvía datos al cliente
Servidor Cliente
readln()
write()
![Page 40: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/40.jpg)
Ejemplo para Servidor
Al correr el programa se presenta
la siguiente información:
El puerto utilizado por el socket es: 3032
Los clientes deberán conectarse a este servidor
usando este puerto
La dirección IP del servidor es:
Proy-Inv/10.10.200.103
Esperando un clienteEs el número de
puerto disponible,
puede cambiar en
cada corrida
Esta es la dirección IP del
servidor, necesaria para que el
cliente se conecte
![Page 41: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/41.jpg)
Lado del cliente
Servidor Cliente
readln()
write()
El cliente, para conectarse a un servidor con TCP, debe
hacerlo indicando a que Servidor y en que puerto se va a
conectar.
El método Socket(Servidor, puerto) permite
crear una conexión TCP del cliente hacia el
servidor
![Page 42: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/42.jpg)
Ejemplo para Cliente
public static void main(String[] args) {int port = Integer.parseInt(args[1]);Socket cliente = null;try{cliente = new Socket(args[0], port);
} catch (IOException ioe) {...}
Los parámetros del cliente
indican el nombre del
servidor y el puerto al cual
conectarse
Se crea una conexión con el
servidor dado en args[0] en el
puerto indicado por args[1]
Se debe ejecutar el programa desde la línea de comandos:
C:\>java ClienteTCP servidor puerto
![Page 43: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/43.jpg)
Ejemplo para Cliente
InputStream flujoBE = cliente.getInputStream();Reader flujoCE = new InputStreamReader(flujoBE);BufferedReader reader = new BufferedReader(flujoCE);OutputStream flujoBS = cliente.getOutputStream();Writer flujoCS = newOutputStreamWriter(cliente.getOutputStream());
BufferedWriter writer = new BufferedWriter(flujoCS);writer.write(InetAddress.getLocalHost()+"\n");writer.flush();String entrada;do{entrada = reader.readLine();System.out.println("Recibido: "+entrada);} while(entrada.length()>1);
De igual forma que el servidor, abre un flujo de escritura y
uno de lectura.
![Page 44: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/44.jpg)
Ejemplo para Cliente
Servidor Cliente
readln()
write() readln()
write()
Como es un esquema orientado a conexión, el enlace
permanece hasta que se cierra por alguno de los
participantes
![Page 45: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/45.jpg)
Sockets UDPSockets UDP
IV.2
![Page 46: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/46.jpg)
Clase DatagramSocket
Los sockets TCP
necesitan que se
establezca una
conexión.
Para hacer una trasmisión sin
conexiones (UDP) se utiliza la
clase DatagramSocket.
No se asocia un flujo al
puerto.
Cada paquete debe
indicar información del
host origen y del host
destino
![Page 47: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/47.jpg)
Usando un DatagramSocket
Se requieren dos puertos para una comunicación UDP, uno de envio y
otro de recepción (El socket de recepción es 5000 y 5001, para este
ejemplo).
Servidor Cliente5000
5001
Para socket de recepciónDatagramSocket(puerto)
Para socket de envíoDatagramSocket()
DescripciónConstructor
![Page 48: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/48.jpg)
Usando un DatagramSocket
Para enviar y recibir paquetes se utilizan los siguientes métodos.
Un paquete es un objeto de la clase DatagramPacket
Servidor Cliente5000
5001
Para recepciónreceive(DatagramPacket)
Para envíosend(DatagramPacket)
DescripciónMétodo
send()
receive() send()
![Page 49: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/49.jpg)
Usando DatagramPacket
Para construir el paquete a enviar se crea un objeto con este constructor:
Información
enviada en
un arreglo
de bytes
Longitud
del
arreglo
de bytes
Dirección IP
del destino
Puerto
al que
se
envía
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
Para construir el paquete que recibe se crea un objeto con este
constructor:
DatagramPacket(byte[] buf, int length)
![Page 50: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/50.jpg)
Servidor UDPclass ServerUDP extends Frame{...public ServerUDP(){...try{socketEnvia = new DatagramSocket();socketRecibe = new DatagramSocket(5000);} catch (SocketException se){... }...}
Crea los sockets de envío y recepción
![Page 51: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/51.jpg)
Servidor UDP
...captura.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try {byte array[] = new byte[100];pantalla.append("Servidor: "+captura.getText()+"\n");array = captura.getText().getBytes();paqEnviado = new DatagramPacket(array,array.length,host,5001);
socketEnvia.send(paqEnviado);captura.setText("");
}catch (Exception ex) {... }}});}
El objeto captura es un TextField donde se
captura la información a enviar
Se construye el
paqueta a enviar
Se envía el
paquete
![Page 52: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/52.jpg)
Servidor UDP
public void ChecaPaquetes() {while (true){try {
byte array[] = new byte[100];paqRecibido = new DatagramPacket(array,array.length);socketRecibe.receive(paqRecibido);String recibido = new String(paqRecibido.getData());host = paqRecibido.getAddress();pantalla.append(host.getCanonicalHostName()+": "+recibido);pantalla.append("\n");
}catch (Exception ex){...}}}
El método checa paquetes está escuchando al puerto
de entrada si se reciben paquetes
El servidor identifica al cliente que inicio la conversación
y a ese cliente es al que le contesta
![Page 53: Diapositivas Para Socket](https://reader034.vdocuments.mx/reader034/viewer/2022042502/55cf9933550346d0339c2659/html5/thumbnails/53.jpg)
Cliente UDPEl servidor y el cliente UDP tienen el casi el mismo código,
solo que el cliente debe indicar servidor al que se quiere
conectarpublic ClienteUDP(String servidor){try {socketEnvia = new DatagramSocket();socketRecibe = new DatagramSocket(5001);host = InetAddress.getByName(servidor);}...}
captura.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{paqEnviado = newDatagramPacket(array,array.length,host,5000);
socketEnvia.send(paqEnviado);...