Actualizado el 28 de Mayo del 2021 (Publicado el 10 de Julio del 2018)
505 visualizaciones desde el 10 de Julio del 2018
132,9 KB
8 paginas
Creado hace 16a (17/06/2008)
Sockets
Curso Propedéutico
Maestría en Ciencias de la Computación
BUAP
Introducción
Las redes de computadoras permiten al usuario
Acceder a datos remotos
Procesamiento remoto
Recursos remotos
Dr. Ivan Olmos
2
1
Introducción
Para facilitar el desarrollo de programas orientados
a aprovechar los recursos remotos, se
desarrollaron bibliotecas con soporte para
conexiones en red
Sockets
socket
Dr. Ivan Olmos
Introducción
En general, cuando se entabla una comunicación
remota entre dos sistemas, se requiere:
Cliente
protocolo
Servidor
petición
respuesta
SOCKET
Dr. Ivan Olmos
3
4
2
Sockets en Java
Introducción
Java proporciona dos familias de clases para
la programación con sockets:
Socket, DatagramSocket, ServerSocket
URL, URLEncoder, URLConnection
El tipo de socket empleado define como se
transfiere la información
Socket Stream (TCP): orientado a conexión
Socket Datagrama (UDP): servicio sin conexión
Dr. Ivan Olmos
6
3
Introducción
Cuando se establece una comunicación a
través de sockets
La comunicación es continua
Sólo finaliza cuando uno de los ordenadores
cierra su conexión
Si se emplea una conexión basada en TCP,
se garantiza la llegada y orden de los
paquetes
Dr. Ivan Olmos
7
Sockets de Flujo (TCP)
E/S: Objetos InputStrem / OutputStream
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
CLIENTE
out.println(“mensaje a enviar”);
in.readLine();
SERVIDOR
Objeto
ServerSocket
Objeto Socket
Creación del socket cliente:
Socket socket = new Socket(“host”, N);
host: servidor al que se conecta
N: #puerto de conexión
Creación del socket serv:
ServerSocket socket =
new ServerSocket(N);
N: #puerto donde estará escuchando
las peticiones de entrada
Dr. Ivan Olmos
8
4
Apertura de Sockets
Cliente
Socket cliente
cliente = new Socket(Host,Puerto);
Host: localhost, IPAddress, hostname
Puerto: Numero de puerto a utilizar (mayor a
1023)
Socket Cliente;
try{
cliente = new Socket(Host, Puerto);
} catch(IOException e) {
System.out.println(e);
Dr. Ivan Olmos
9
Apertura de Socket
}
}
}
Servidor
ServerSocket Servidor;
try{
} catch(IOException e) {
System.out.println(e);
Servidor = new ServerSocket(Host, Puerto);
Cuando se implementa un servidor, se requiere crear un
objeto socket que atienda a la petición recibida en el servidor
Socket Servicio = null;
try{
Servicio = Servidor.accept();
} catch(IOException e) {
System.out.println(e);
Dr. Ivan Olmos
10
5
Streams de Entrada
Cliente: DataInputStream
DataInputStream in;
try{
} catch(IOException e) {
System.out.println(e);
in = new DataInputStream(socket.getInputStream());
DataInputStream permite la lectura de líneas de
texto y tipos de datos primitivos de Java
read(), readChar(), readInt(), readDouble(), readLine()
Misma sintaxis para un socket servidor
Dr. Ivan Olmos
11
Streams de Salida
Cliente: PrintStream o DataOutputStream
}
}
PrintStream salida;
try{
} catch(IOException e) {
System.out.println(e);
out = new PrintStream(socket.getOutputStream());
Para enviar mensajes, se pueden utilizar las
opciones
write(), println()
Dr. Ivan Olmos
12
6
Streams de Salida
Cliente: DataOutputStream
DataOutputStream salida;
try{
} catch(IOException e) {
System.out.println(e);
out = new DataOutputStream(socket.getOutputStream());
}
}
Esta clase, al igual que PrintStream permite
escribir datos primitivos de Java
Dr. Ivan Olmos
13
Streams de Salida
Servidor: PrintStream
PrintStream salida;
try{
} catch(IOException e) {
System.out.println(e);
out = new PrintStream(serversocket.getOutputStream());
También se puede utilizar la clase
DataOutputStream
Dr. Ivan Olmos
14
7
Cierre de Sockets
Siempre se deben cerrar los canales de
entrada y salida
Cliente:
Servidor:
}
try{ out.close();
in.close();
} catch(IOException e) {
System.out.println(e);
try{ out.close();
in.close();
serversocket.close();
} catch(IOException e) {
System.out.println(e);
}
Dr. Ivan Olmos
15
8
Comentarios de: Sockets (0)
No hay comentarios