PDF de programación - LPS: Red y conexión remota

Imágen de pdf LPS: Red y conexión remota

LPS: Red y conexión remotagráfica de visualizaciones

Publicado el 5 de Octubre del 2020
313 visualizaciones desde el 5 de Octubre del 2020
1,0 MB
33 paginas
Creado hace 13a (10/04/2011)
Federico Peinado
www.federicopeinado.es

Depto. de Ingeniería del Software e
Inteligencia Artificial
disia.fdi.ucm.es

Facultad de Informática
www.fdi.ucm.es

Universidad Complutense de Madrid
www.ucm.es

 Conjunto de máquinas conectadas a través de una

topología física y uno o más protocolos lógicos

 Los protocolos más relevantes (Transport Control

Protocol e Internet Protocol) son los que dan nombre a
las conocidas redes TCP/IP (como es el caso de Internet)
• Cada máquina está identificada por una dirección IP, 4 bytes

expresados como 4 números entre 0 y 255
 Por ejemplo 147.96.1.9

• Las máquinas sólo entienden direcciones IP, pero no nombres de
dominio (DNS). Son los servidores de nombres los que traducen
nombres de dominio a IPs.
 Por ejemplo www.ucm.es

• Una conexión TCP/IP sólo conecta dos ordenadores distintos

(existiendo, en principio, por cada máquina una sola conexión a
la vez)

Laboratorio de Programación de Sistemas – Red y conexión remota

2

 Para ser precisos cada conexión IP se asocia a una dirección IP y un

puerto determinado (como un casillero interno) dentro de la
máquina de destino
• Los puertos se identifican mediante 2 bytes, un número entre 0 y 65535

 Gracias a los puertos, cada aplicación puede recibir distintas

conexiones (cada una en un puerto distinto, claro)
• Cada aplicación define en qué puertos escucha
• Los clientes se conectan al puerto especificado

 Los 1024 primeros puertos de todas las máquinas están “reservados”

para aplicaciones concretas (aunque algunos no se usan)
• Algunos de los más conocidos: 21 (ftp), 23 (telnet), 25 (smtp), 80 (http),

etc. porque los programas de un servidor que implementa estos
protocolos siempre escuchará en estos puertos

Laboratorio de Programación de Sistemas – Red y conexión remota

3

 Los protocolos de transporte sirven para enviar información

sofisticada de un puerto de una máquina al puerto de otra
• Los protocolos de aplicación son aún de más alto nivel y dependerán de

la aplicación concreta

 Protocolos de transporte que se utilizan en redes IP:

• TCP

 Protocolo basado en la conexión punto a punto que provee un flujo

fiable de datos entre dos máquinas
 Ejemplos: HTTP, FTP, SMTP…
• UDP (User Datagram Protocol)

 Protocolo para envío de paquetes de datos de manera independiente,

llamados datagramas, de una computadora a otra sin garantizar su
llegada
 Ejemplos: MMS (streaming de video), intercambio de fuentes en redes P2P…

Laboratorio de Programación de Sistemas – Red y conexión remota

4

 Según este modelo, hay dos tipos de máquinas: los
clientes y los servidores. Los clientes se conectan a
servidores, les hacen solicitudes de servicios y estos
responden proporcionándolos
• Ejemplos: Navegadores/servidores web, clientes/servidores de

correo…

 Clientes y servidores establecen conexiones TCP y se
intercambian remotamente datos a través de sockets
• Vínculos de comunicación que se crean entre dos aplicaciones

según el protocolo TCP (siempre asociados a una dirección IP y
un puerto)

• Puntos finales de la comunicación en Internet

 Un cliente se comunica con un servidor estableciendo

una conexión con el socket que tiene el servidor
• Conociendo la dirección IP del servidor y el puerto de conexión

Laboratorio de Programación de Sistemas – Red y conexión remota

5

Laboratorio de Programación de Sistemas – Red y conexión remota

6

Laboratorio de Programación de Sistemas – Red y conexión remota

7

Java tiene diversos mecanismos para la red

• Sockets: Acceso avanzado para comunicación

fiable (TCP)

• Datagramas: Acceso avanzado para comunicación

no fiable (UDP)

• JDBC: Permite acceso remoto a bases de datos
• URLs: Acceso simple orientado a la web
• RMI: Invocación Remota de Procedimientos
• Servicios web
• …

Laboratorio de Programación de Sistemas – Red y conexión remota

8

 Estudiaremos conexiones TCP de bajo nivel

• Es decir, el protocolo de aplicación lo definiremos

nosotros

• Para cuando ambas aplicaciones son Java existen

mecanismos de más alto nivel (como RMI)

 En Java las clases relacionadas con la red

están dentro del paquete java.net
• La clase InetAddress sirve para trabajar con

direcciones de red

• La clase Socket representa un socket
• La clase ServerSocket facilita la creación de sockets

para esperar conexiones de clientes

Laboratorio de Programación de Sistemas – Red y conexión remota

9

Sirve para manejar direcciones de Internet

• Gestión de nombres de dominio
• Validación de direcciones IPs

InetAddress host = InetAddress.getByName("www.ucm.es");

System.out.println("Host name: " host.getHostName());
System.out.println("IP address: " +

host.getHostAddress());

Laboratorio de Programación de Sistemas – Red y conexión remota

10

Laboratorio de Programación de Sistemas – Red y conexión remota

11

 Implementa una conexión tipo “socket de

cliente” basado en una conexión punto a punto

 Al crearlo, se le pasa una dirección IP y un puerto
 Una vez establecida la conexión, ofrece flujos

para leer y escribir en el socket
• Tiene asociado un flujo de entrada

 InputStream getInputStream()
• Tiene asociado un flujo de salida

 OutputStream getOutputStream()

Laboratorio de Programación de Sistemas – Red y conexión remota

12

1. Abrir la conexión (Socket)
2. Crear los flujos de entrada y salida

asociados a dicha conexión

3. Leer y escribir de los flujos de entrada y

salida de acuerdo al protocolo de
aplicación que hayamos definido

4. Cerrar los flujos de entrada y salida
5. Cerrar la conexión

Laboratorio de Programación de Sistemas – Red y conexión remota

13

Requisitos: que sea capaz de solicitar a

www.ucm.es su página web inicial

Utilizamos el protocolo HTTP (puerto 80)
El protocolo de aplicación será:

1. El cliente se conecta al puerto 80 del servidor
2. El cliente escribe en el socket la cadena “GET”

seguido del nombre del fichero (página)

3. El servidor envía por el socket el fichero (página)
4. El servidor cierra la conexión

 Luego el cliente ya no leerá más información

Laboratorio de Programación de Sistemas – Red y conexión remota

14

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

public class Client {

public static void main(String[] args) {

Socket s = null;
BufferedReader in = null;
PrintWriter out = null;

// 1. Abrimos la conexión
// 2. Creamos los flujos de entrada y salida
// 3. Escribimos la solicitud (GET)
// 4. Leemos hasta que no haya nada más
// 5. Cerramos la conexión

...

}

}

Laboratorio de Programación de Sistemas – Red y conexión remota

15

// 1. Abrimos la conexión

try {

s = new Socket("www.google.es", 80);

} catch (IOException ex) {

System.err.println("Error conectándonos al servidor.");
System.err.println(ex);
return;

}

// 2. Creamos los flujos de entrada y salida

try {

in = new BufferedReader(new InputStreamReader(

s.getInputStream()));

out = new PrintWriter(s.getOutputStream());

} catch (IOException ex) {

System.err.println("Error al crear los flujos");
System.err.println(ex);
return;

}

Laboratorio de Programación de Sistemas – Red y conexión remota

16

// 3. Escribimos la solicitud (GET)

out.println("GET index.html");
out.flush(); // Nos aseguramos que se envía

// 4. Leemos hasta que no haya nada más

String entrada;
try {

while ((entrada = in.readLine()) != null)

System.out.println(entrada);

} catch (IOException ex) {

System.err.println("Error de lectura.");
System.err.println(ex);

}

// 5. Cerramos la conexión

try {

in.close();
out.close();
s.close();

} catch (IOException ex) {

System.err.println("Error cerrando la entrada.");
System.err.println(ex);

}

Laboratorio de Programación de Sistemas – Red y conexión remota

17

try {

Socket s = new Socket ("www.ucm.es", 80);

BufferedReader in = new BufferedReader (new

InputStreamReader(s.getInputStream()));

PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("GET / HTTP/1.0");
out.println();

boolean more = true;
while (more) {

String line = in.readLine();
if (line == null)

more = false;

else

}

System.out.println(line);

} catch (IOException e) {

e.printStackTrace();

}

Aparecerá el código HTML tomado de aquí…

Laboratorio de Programación de Sistemas – Red y conexión remota

18

Laboratorio de Programación de Sistemas – Red y conexión remota

19

 Implementa un conexión tipo “socket de

servidor” asociada a una dirección IP y un puerto

 Espera hasta que se conecta algún cliente y le

asigna un socket cliente
• Socket accept();
• ¡Ojo! La comunicación se realiza entre Sockets iguales,

ServerSocket sólo ayuda a establecer dicha conexión

• El Socket asociado al ServerSocket tiene los

correspondientes flujos de entrada y salida
 InputStream getInputStream()
 OutputStream getOutputStream()

Laboratorio de Programación de Sistemas – Red y conexión remota

20

1. Se crea el servidor de escucha (SocketServer)
2. Se bloquea esperando una conexión (Socket)

• El bloqueo puede tener un cierto timeout

3. Un vez conectado un cliente, se crean los

flujos de entrada y salida asociados a la
conexión

4. Se lee y escribe en ellos en base al protocolo

de aplicación que hayamos definido

5. Se cierran los flujos de entrada y salida, y

también la conexión

6. Se cierra el servidor de escucha

Laboratorio de Programación de Sistemas – Red y conexión remota

21

 Requisitos: que sepa esperar y atender a al

cliente que se conecte por el puerto 4444
1. Cuando alguien se conecta se le envía la cadena

“Dime algo”

2. El servidor se queda leyendo del flujo de entrada

de la conexión

3. Todo lo que llega lo va escribiendo por pantalla

Laboratorio de Programación de Sistemas – Red y conexión remota

22

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

class Server {

public static final int PUERTO = 4444;

public static void main(String []args) {

ServerSocket ss;
Socket conexion;
BufferedReader conIn;
BufferedWriter conOut;

// 1. Creamos el
  • Links de descarga
http://lwp-l.com/pdf18321

Comentarios de: LPS: Red y conexión remota (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad